Skip to main content

Full text of "Editions Radio - Pratique de l'Oric-1 et 36 programmes"

See other formats


H. LILEN - J. BÉNARD 


| PRATIQUE 
Loziares 


36 PROGRAMMES 











3 2h: 
LERL 


IRE L n La: 





S. E. C.F. 


Ne 


ÉDITIONS RADIO 





RE 











a  —- 
EE — — —  — 
—— — 





\ k fl 
\ 
MENU 





— % \ 
+  _ _ — à e * 
ee ——] ——_—_ —_ 6 © 
 — —_ — | & 
——_— —— ——_—_—_ 
—— —_—_— 
———_ —_ —— € | 

















EE æ 


— a 
 — ——_—_—_—_  —” 


TS — 








EE” 
EE —— 
EE — 


EE 


27.451168 





RADIO 


Le 
(A 
LL 
n 


Éditions Radio 


H. LILEN - J. BÉNARD 


PRATIQUE 


l'ORIC1 


36 PROGRAMMES 


S. E. C.F. 


en 
Editions Radio 


9, RUE JACOB - 75006 PARIS 
EL. 329.63.70 


ATTENTION ! 
Une erreur peut en cacher une autre... 
Le message d’erreur signalé par votre micro-ordinateur 


pour la ligne 250, par exemple, d’un programme 
ne signifie pas forcément que cette ligne est mauvaise. 


C’est peut-être la ligne 120 qu’il faut corriger, ou 
tout simplement il y a incompatibilité entre vos 
données et votre programme. 





La loi du 11 mars 1957 n’autorisant, aux termes des alinéas 2 et 3 de l’article 41, d’une part, que les « copies 
ou reproductions strictement réservées à l’usage privé du copiste et non destinées à une utilisation collec- 
tive » et, d’autre part, que les analyses et les courtes citations dans un but d’exemple et d'illustration, 
« toute représentation ou reproduction intégrale ou partielle, faite sans le consentement de l’auteur ou de 
ses ayants droit ou ayants cause, est illicite » (alinéa 1° de l’article 40). Cette représentation ou reproduc- 
tion, par quelque procédé que ce soit, constituerait donc une contrefaçon sanctionnée par les articles 425 et 
suivants du Code pénal. 


/ Imprimerie B -L H, N 
© SEcF Éditions Rodio, Paris 


1983 


. Dépôt légal : décembre 1983 
Tous droits de traduction, de reproduction Éditeur n° 932 - Imprimeur : 778229 
et d'adaptation réservés pour tous pays L.S.B.N. 2 7091 0932 8 





AVANT-PROPOS 


Décidément, les Anglais nous surprendront toujours ! Ce sont eux qui, en effet, 
ont inventé ces merveilleux petits micro-ordinateurs dont l’Oric est le type le plus 
élaboré, peut-être, et qui connaissent un succès amplement mérité. Grâce à leur fai- 
ble prix, ces machines ont révélé ce qu'était la micro-informatique à un très vaste 
public. Des centaines de milliers de personnes, aujourd’hui, les emploient aussi bien 
pour leurs applications professionnelles ou familiales que pour jouer ou apprendre. 
Pourquoi pas vous ? 

Telle est probablement ce à quoi vous songez si vous avez commencé à feuilleter 
ce livre : il vous est destiné si vous êtes totalement profane en informatique, si vous 
n'avez jamais manipulé un micro-ordinateur, si vous ignorez tout de la program- 
mation et du Basic et si même, de surcroît, vous redoutez ces étranges petites machines 
dont on dit qu'elles sont capables de suppléer l’homme dans ses fonctions 
intellectuelles. 

Nous allons vous prouver que vous pouvez mettre le micro-ordinateur à votre ser- 
vice bien plus aisément que vous ne l’imaginez. Pour cela, nous allons vous proposer : 


e De faire la connaissance de l’Oric-1, pour commencer : comment le brancher, le 
mettre en service, comment aussi entamer le « dialogue » avec lui. 


e Puis, nous vous montrerons aussitôt comment utiliser des cassettes de program- 
mes (jeux, enseignement, gestion...) avec un banal magnétophone. Dès lors, et sans 
même qu'il vous soit besoin d’aller plus avant, vous serez à même d’exploiter immé- 
diatement ce micro-ordinateur (sans donc avoir à apprendre la programmation). 


e Mais nous vous engageons vivement à vous initier à cet art, dans un premier but 
de démystification. Vous constaterez que la programmation devient très vite l’un 
des « jeux » les plus passionnants qui soit. Que les informaticiens professionnels 
nous pardonnent pour ce mot de jeux ! Pour notre excuse, ajoutons que les ambi- 
tions de ce livre sont plus modestes et qu’il n'entend pas, en quelques pages, faire 
du lecteur un analyste-programmeur de métier. Nous allons toutefois très rapide- 
ment vous mettre en demeure de concevoir vos propres programmes dans ce lan- 
gage appelé le « Basic », qui est, aujourd’hui, le plus répandu. 

Pour cela, laissez-vous simplement guider par les chapitres qui suivent. Toutes les 
notions nouvelles vont vous être présentées à l’aide d’exemples concrets et d’exerci- 
ces (donnés avec les résultats que vous devez obtenir), pour que vous les assimiliez 
sans peine et sans effort inutile de mémoire. Laissez-vous aussi guider par votre fan- 
laisie et votre imagination et n'hésitez pas à créer des variantes des programmes 
que nous vous proposerons, ce que vous serez certainement tenté de faire. Les auteurs 
ne peuvent que Vous y encourager. 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Une question importante se pose toutefois : vous faut-il obligatoirement disposer 
d’un Oric pour aborder l’étude de ce livre ? Il est évident que c’est préférable car 
alors, vous pourrez directement expérimenter sur machine et acquérir l’indispensa- 
ble pratique de l’informatique. Mais ce n’est nullement une condition impérative 
pour une première lecture rapide, celle qui doit vous permettre de vous tester vous- 
même et de vous rassurer pleinement ; elle vous incitera très certainement à fran- 
chir le pas et à investir dans l’achat d’une telle machine. Ce dont vous aurez tout 
lieu de vous féliciter par la suite. 

Les chapitres IV à VIII présentent chacun une partie du langage avec de nombreux 
exemples brefs qui mettent l'accent sur ce qui est nouveau. À la fin de ces chapitres, 
vous trouverez des programmes qui mettent en application ces nouveautés. Leur 
but est de vous donner des idées ; amusez-vous à les essayer, puis modifiez-les. 
Enfin, le dernier chapitre regroupe les programmes de récapitulations : c’est une 
espèce de révision qui vous est proposée ! Selon votre tempérament, vous adopte- 
rez sans doute l’une de ces deux démarches : commencer par lire les explications 
et taper les exemples simples pour tous les chapitres, avant de passer aux program- 
mes d’applications, ou bien tout lire d’une seule traite, en faisant quand même une 
pause casse-croûte de temps en temps ! 


CHAPITRE I 


POUR FAIRE CONNAISSANCE AVEC L’ORIC 


Ce premier chapitre est destiné à vous présenter l’Oric. Plus généralement d'’ail- 
leurs, on va vous exposer ce qu'est un micro-ordinateur personnel et de quoi se 
compose un « système informatique ». On vous montrera aussi comment connec- 
ter l’Oric et comment entamer (tout juste !) le dialogue avec lui. 


Principaux thèmes étudiés 


La micro-informatique recourt à un vocabulaire qui lui est propre. Souvent à base d’anglais, d’ailleurs. 
Démrystifier l’informatique revient souvent à démystifier ce vocabulaire, pour commencer. Nous allons 
nous y employer dans ce livre en vous présentant progressivement tous les termes qu’il importe de connaî- 


tre. 


Ne les apprenez pas par cœur : si vous hésitez sur la signification d’un mot, reportez-vous au paragraphe 
qui le définit. Pour cela, nous avons placé, en marge du texte, les termes que nous appellerons des 
« mots-clés ». Au début de chaque chapitre, nous vous en donnerons la liste dans l’ordre où ils apparais- 
sent. En fin d’ouvrage, tous ces mots-clés sont regroupés par ordre alphabétique, avec l’indication de la 
page où vous les trouverez cités. 
Voici la liste des mots-clés pour ce premier chapitre ; ne vous laissez pas impressionner par une longueur 


qui n’est qu’apparente ! 


Branchement de l’Oric-—1 
Alimentation 

Prise Péritel 

Mise en service 
QWERTY 

AZERTY 

Curseur 

Effacement arrière 
DEL 

SYNTAX ERROR 
Répétition des touches 
SHIFT 

Langages 


BRANCHEMENT 


DE L'ORIC - 1 





Basic 

Basic Microsoft 
Chiffre zéro et lettre O 
Microprocesseur 
Mémoires internes 
Mémoires centrales 
Mémoires externes 
Mémoires périphériques 
Cellules mémoires 
Octet 

Caractère 

Byte 

Mémoires vives 


1. L’Oric — 1 et ses branchements 


RAM 

Mémoires mortes 
ROM 

Volatilité des mémoires 
Ligne physique 
Ligne logique 
CTRL 
Minuscules 
Majuscules 
CTRL/T 

CAPS 

Format de l’écran 
RETURN 





Oui, le micro-ordinateur Oric— 1, c’est ce clavier que représente notre photo. Ce 
bloc, mesurant environ 28 cm sur 18 cm, a la forme d’un pupitre de 2 cm d’épais- 
seur sur l’avant et 5 sur l’arrière ; il contient tous les circuits électroniques qui font 


un ordinateur. 


Afin de le faire fonctionner, il faut l’alimenter en énergie électrique, d’une part, le 
connecter à un récepteur de télévision pour obtenir des images, d’autre part. 


8 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


COELCOCLCCT 


VALLE RETURN 


LELLE esse 


SHIFT Et F4 SHIFT 


nn. 


== 


Léon 





Gros plan sur l’Oric— 1 : son clavier 


Ce micro-ordinateur a besoin d’une tension continue de 9 volts ; celle-ci lui sera 
fournie par un petit bloc d’alimentation qu’on connectera directement sur le sec- 
teur (220 volts alternatifs) ; il en sort un câble terminé par un connecteur coaxial 
femelle : insérez-le dans la prise mâle située à l’arrière-droit du micro-ordinateur. 





La connexion à un téléviseur n’est guère plus complexe ; utilisez, de préférence, un 
récepteur couleur si vous voulez bénéficier de toutes les facultés de votre machine. 
PRISE Le branchement s’effectue via la prise « Péritel » (mot provenant de péri-télévi- 
PERITEL sion), cette prise étant obligatoire en France sur tous les récepteurs, depuis 1981. 
C’est une prise à deux rangées de connexions, femelles sur le téléviseur, de forme 
allongée. Saisissez-vous du câble spécial qui vous est livré avec l’Oric et qui se ter- 
mine par une fiche mâle correspondante ; enfichez celle-ci. L’autre extrémité de ce 
câble se termine par une prise ronde, mâle, à 5 broches (dite « aux normes DIN »). 
Insérez-la dans le connecteur femelle correspondant, situé à l’arrière gauche du 
micro-ordinateur. 


Votre micro-ordinateur va ainsi fournir les signaux d’image (rouge, vert et bleu) et 
de synchronisation à votre téléviseur, mais celui-ci doit basculer en mode réception 
vidéo. Pour cela, il faudra encore amener une tension de 12 volts à la fiche Péritel, 
à l’aide d’un second bloc d’alimentation, plus petit et ajustable. Il s’agit d’un 
« adaptateur », à connecter également au secteur 200 V (prévoyez une prise multi- 
ple !) ; ajustez l’ergot, qui glisse latéralement sur 12 V (généralement, 6 V suffi- 
sent ; vous n’avez rien à redouter si vous essayez diverses valeurs : votre téléviseur 
ne craint rien car elles seront de toutes façons inférieures à 12 V. Si elles sont trop 
faibles, toutefois, la commutation interne ne se fera pas et vous n’obtiendrez pas 
d’image de l’Oric— 1). L’autre extrémité du câble de l’adaptateur se termine par 
une prise en croix, dont l’intérêt est d’offrir quatre fiches de connexion. Choisissez 
celle qui s’insère normalement sur la prise femelle située à l’arrière du connecteur 
mâle Péritel : c’est la plus fine. 


La prise mâle située à gauche, à l’arrière du micro-ordinateur, sert à attaquer la 
fiche antenne d’un récepteur de télévision aux normes « PAL ». (Les normes fran- 
çaises sont appelées SECAM). Ignorez-la donc, et ce d’autant plus allègrement que 
le branchement Péritel fournit une image de bien meilleure qualité. A moins que 
vous ne disposiez d’un récepteur de télévision « multistandard », acceptant le PAL 
et ne possédant pas de prise Péritel, ou encore d’un récepteur SECAM sans prise 


POUR FAIRE CONNAISSANCE AVEC L’ORIC 9 








Attention : cette prise 
ronde aussi sert 
au magnétophone ! 










Prise mâle 


Sortie pour l'attaque fire ; 
d'alimentation 


d'un téléviseur 






Fiche DIN Ÿ 
mêle 






lgnorez cette 
prise mâle 










Bloc : 
d’alimentation 


Pour ajuster la 
tension 12 V 


Adaptateur 

















Vous pourriez même ignorer 
l'adaptateur secteur et connecter 
ici une pile 9 V 


A enficher sur la 
fiche Péritel femelle 
du téléviseur 





Comment brancher l’Oric — 1 pour le mettre en service. 


Péritel : dans ce cas, il vous faudra un boîtier de conversion en plus, ce que votre 
vendeur sera certainement très heureux de vous fournir (consultez-le). 
Cela étant fait, vous voici enfin prêt à faire naître l’image. 


2. Mise en service 


Notez, tout d’abord, que l’Oric — 1 ne possède pas d’interrupteur de mise en ser- 
vice : vous débrancherez simplement ses blocs d’alimentation et adaptateur pour le 
MISE EN déconnecter. 

SERVICE Mettez donc le téléviseur en marche, sur n’importe quelle station (625 lignes), peu 
importe : la commutation Péritel a priorité. Si, à ce moment, vous alimentez 
l’Oric— 1, vous allez voir apparaître sur l’écran une image quelconque pendant un 


court instant, puis le message suivant en noir sur fond blanc : 





10 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 






Ce cadre est censé 
représenter la partie claire de 
votre écran de 

télévision, telle qu’elle 
est proposée par l‘Oric - 1 








ORIC EXTENDED BASIC V1.9 
c 1983 TANGERINE 












Traduction : 
«Basic étendu de l’Oric, 
version 1. 0. Copyright 
1983 Tangerine» __/ 





47870 BYTES FREE 












lci, ce petit pavé 
clignote. On l'appelle 
un «curseur» 







«47870 octets 
disponibles» 







{Nous ne savons pas comment 
vous représenter le clignotement 
sur le papier) 






Si vous n’obtenez pas ce message au bout de 
quelques secondes, c’est peut-être que vous 
n’avez pas respecté l’ordre de mise en 
marche : le téléviseur, puis l’alimentation 
Péritel et enfin l’Oric. Il suffit alors de 
débrancher l’ordinateur un instant et de le 
rebrancher. 


Qu'est-ce que tout cela peut-il bien signifier ? Et bien, tout d’abord, le « langage » 
employé par l’Oric se présente poliment : « Je suis la version 1.0 du Basic étendu de 
l’Oric ». Puis, le micro-ordinateur vous annonce de quelle « capacité mémoire » 
vous disposez. Enfin, il s’affirme prêt à vous servir. Si le message que vous lisez est 


différent, ne vous en inquiétez pas : on va voir ce que tout cela signifie. 


Réglez donc le contraste et la luminosité du téléviseur afin d’obtenir une image 
agréable à regarder, puis examinez le clavier. Il comporte cinq rangées de touches 


marquées de divers symboles. 


Considérez d’abord la rangée supérieure des touches a/phabétiques. De gauche à 
droite, elle commence par les lettres Q, W, E, R, T, Y, etc. ; si, maintenant, vous 
comparez cette distribution à celle d’une machine à écrire courante, vous verrez 
qu’à cet emplacement, la machine à écrire dispose des touches À, Z, E,R, T, Y, 


etc. 





La distribution appelée AZERTY correspond 
aux normes françaises, la distribution 
QWERTY, aux normes anglaises ou 
américaines. 


QWERTY 
AZERTY 










le B … 


EFFACEMENT 
ARRIERE 





Vous venez de frappez 


POUR FAIRE CONNAISSANCE AVEC L’'ORIC 11 


En fait, les différences sont minimes mais capables de gêner une dactylo experte (ou 
un expert du clavier). Si vous êtes aussi peu adroit au clavier que l’auteur, vous 
n’aurez aucun mal à vous faire au QWERTY. Afin de vous exercer, frappez donc le 
mot BONJOUR (qui n’a, ici, rigoureusement rien à voir avec l’informatique pure) 
en examinant ce qui se passe sur l’écran. Tout d’abord, le B se place sur la ligne 
marquée par le curseur, en 3° position, puis le curseur passe aussitôt à la position 
suivante : 












Ces tirets indiquent 
qu’on ne vous montre 
qu'un «extrait» de l‘écran 


…… Et le curseur 


Frappez donc BONJOUR au complet, ce qui donne : 





Remarquez qu’à chaque frappe, le curseur se 
déplace d’un cran vers la droite : il marque 
l’emplacement où apparaitra le caractère 
suivant. 


Si vous vous trompez en frappant un caractère, appuyez sur la touche marquée 
DEL (à droite du clavier) ; elle ramène le curseur d’un pas en arrière et ce curseur 
efface le caractère qu’il recouvre. Vous pouvez dès lors en frapper un nouveau. 


DEL est une touche d’espacement arrière 
avec effacement. 


Comme sur toutes les machines à écrire, le clavier de l’Oric dispose d’une barre 
d’espacement ; c’est la longue barre horizontale du bas. Elle sert à créer des 
« blancs », des espaces. Expérimentez-là. 


Ne vous privez pas de frapper sur le clavier, 
même en mélangeant ou combinant des 
touches. Votre Oric ne craint rien (si vous 
frappez avec une force « raisonnable ») ; 
vous ne provoquerez pas de panne ! 


Cependant, il réagira parfois et affichera des messages bizarres, du genre : 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








SYNTAX ERROR 


REPETITION 


DES TOUCHES 





SHIFT 


LANGAGES 


BASIC 












Traduction : 
«Erreur de 
De Un Syntaxe) pl 


?SYNTAX ERROR 
Ready 






NE Prêt» )- 2 2 2 


C’est tout simplement parce que l’ordinateur n’a pas compris où vous vouliez en 
venir. Forcément, vous ne respectez pas ses commandes normales (qu’on va vous 
enseigner plus loin). 


À nouveau, ces messages ne nuisent en aucun 
cas à l’Oric et vous ne pouvez le mettre en 
panne ainsi. 


Remarquez que, si vous maintenez une touche enfoncée, son caractère va apparaî- 
tre une fois mais, après un court instant, il va se répéter en permanence : les tou- 
ches sont à répétition. 

Vous avez aussi remarqué que certaines touches sont marquées d’un double 
symbole, par exemple un chiffre tel que le 1 et, à côté, un point d’exclamation. Si 
vous frappez sur cette touche (le 1 : en haut et à gauche), vous obtenez un 1 sur 
lécran. Mais comme sur une machine à écrire, vous pouvez obtenir le second 
caractère en « basculant » la frappe. Pour cela, repérez les deux touches marquées 
SHIFT, de part et d’autre du clavier ; utilisez l’une ou l’autre, selon votre confort : 


e Frappez sur SHIFT ef maintenez-la enfoncée. 
e Puis, frappez sur le 1. 
e Relâchez le tout. 


Vous écrivez ainsi un point d’exclamation (!). 


On peut traduire SHIFT par « basculer ». 
L'action conjointe sur SHIFT et sur une 
autre touche, le 1 ici, sera écrite par la suite 
SHIFT/1. 


Mais vous en savez assez sur cette mise en route, pour ce premier chapitre. Sachez 
que nous reviendrons sur le clavier afin de vous en détailler toutes les possibilités. 


3. Qu'est-ce que le Basic ? 


Un ordinateur se distingue des autres types de machines par le fait qu’on peut lui 
déléguer des fonctions « intellectuelles ». il sait faire énormément de choses si on 
les lui « explique » correctement : poser une fusée sur la lune, établir une facture, 
jouer aux échecs ou vous apprendre les mathématiques... Pour cela, vous devez lui 
fournir des instructions précises développant ce qu’il doit faire dans un langage 
qu’il soit capable de comprendre. 


De nombreux « langages » ont été créés, mais le plus répandu en micro- 
informatique est celui qu’on appelle le Basic, qu’on va étudier dans ce livre. Il 
dérive non pas du français courant (hélas !), mais de l’anglais, car toute l’informa- 
tique nous vient d’outre-Atlantique. Rassurez-vous : même si vous n’êtes pas porté 
sur les langues étrangères, le nombre de mots à acquérir est tellement faible que 
vous ne vous apercevrez même pas que vous vous exprimez en anglais. Plus que de 
mots, d’ailleurs, il s’agira de codes dont l’apprentissage ne demande pas d’effort. 


BASIC 


MICROSOFT 





CHIFFRE 0 


ET LETTRE O 





MICROPROCESSEUR 





MEMOIRES 
INTERNES, 


CENTRALES 





POUR FAIRE CONNAISSANCE AVEC L’ORIC 13 





Le langage Basic a été développé aux Etats-Unis au cours des années 60. Ce mot est 
formé par les premières lettres de l’expression « Beginners All-purpose Symbolic 
Instruction Code », soit, à peu près : code d'instructions symboliques tous usages 
pour débutants. 


Depuis son invention, le Basic a cependant 
fait souche et s’est multiplié. Aujourd’hui, 
il existe en de très nombreuses variantes. 


Pensez au français, tel qu’il est parlé en France, et au français de Montréal 
(Canada), par exemple : le noyau de la langue est le même mais ici et là se manifes- 
tent des différences sensibles. Il en va de même du Basic, qui existe en plusieurs dia- 
lectes pourrait-on dire. Le plus répandu des Basics est cependant celui qui a été mis 
au point par la société américaine Microsoft ; c’est celui qu’Oric a adopté. C’est un 
Basic très complet, étendu comme l’on dit, dont la version employée par l’auteur 
est la 1.9, ainsi que l’indiquait l’écran. 


En passant, notez l’écriture « 1.9 » qui se 

lit « un point zéro ». 

En informatique, on écrira souvent le zéro 
avec une barre au travers pour le différencier 
de la lettre O. En effet, pour l'ordinateur, 
zéro et O sont deux choses totalement 
différentes. Vérifiez-le en les frappant 

au clavier. Et ne les confondez pas à l’avenir. 


Vous pourrez peut-être disposer d’une version différente du Basic sur votre propre 
machine, mais peu importe pour ce qui suit. Mais où ce « langage » se trouve-t-il 
dans l'ordinateur ? 


4. Microprocesseur et mémoires 


Ce qui suit, ici, n’est pas absolument indispensable pour utiliser votre micro- 
ordinateur. Il s’agit d’un petit peu de technique. Mais pourquoi ne pas le lire ? 
Vous vous ferez, ainsi, des idées plus précises sur les caractéristiques de la machine. 


Sachez, tout d’abord, que l’âme de tout micro-ordinateur est un minuscule circuit 
électronique qui tient dans le creux de la main et s’appelle un « microprocesseur ». 
Celui qui équipe l’Oric — 1 porte le nom (peu harmonieux) de « 6502 ». C’est lui 
qui exécute tous vos ordres. 


Cependant, il ne peut fonctionner que pour autant qu’il dispose de circuits lui ser- 
vant de mémoires. Dans ces mémoires seront rangés les programmes, les données, 
les chiffres à additionner ou à soustraire, par exemple, et les résultats. Il s’agit, là 
encore, de minuscules circuits électroniques capables de répondre instantanément 
aux sollicitations du microprocesseur. 


On les appelle des « mémoires internes » 
(à l’ordinateur), ou encore des « mémoires 
centrales ». 


En effet, il existe aussi des mémoires 
« externes », dites aussi « périphériques », 
telles que les cassettes magnétiques. 


MEMOIRES 
EXTERNES, 
PERIPHERIQUES 


CELLULES 
MEMOIRES 


OCTET 
CARACTERE 


BYTE 


MEMOIRES 
MORTES 


VOLATILITE 
DES MEMOIRES 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Vous pouvez acquérir des programmes tout faits sur bande magnétique mais, pour 
pouvoir les exécuter, il vous faudra obligatoirement les transférer au préalable en 
« mémoire centrale » car ce n’est qu’à partir de celles-ci qu’ils pourront « tour- 
ner » (terme du jargon informatique signifiant « marcher »). 


Ces mémoires internes sont organisées en cellules ; chaque cellule est capable de 
mémoriser un caractère tel que ceux que vous frappez au clavier. Si vous vouliez 
écrire une lettre de 25 lignes de 60 caractères, par exemple, et la mettre en mémoire, 
il vous faudrait disposer de 25 fois 60 = 1 500 cellules en mémoire. 


La frappe d’un caractère se traduit, en effet, par l’émission d’une série de 8 impul- 
sions électriques, ce qu’on appelle un octet. Or, une cellule est précisément capable 
de mémoriser 8 impulsions électriques, donc un octet. Notez qu’octet se dit 
« byte », en américain. Un total de 1 024 octets (et non 1 000 : ainsi le veut l’infor- 
matique !) s’appelle un kilo-octet, ou K octet (et en anglais « kilobyte »). 


Rappelez-vous qu’en pratique, « octet » 
(ou « byte ») et « caractère » sont équivalents. 


Le premier écran que vous fournit l’Oric — 1 vous précise de combien d’octets vous 
disposez, selon la version que vous avez acquise : 16 K ou 48 K. Ainsi, la version 
48 K de l’auteur indiquait la disponibilité de 47 870 octets en affichant « 47 870 
BYTES FREE », où FREE signifie libre. Cela fait un peu moins que 48 K exacte- 
ment, car 48 K = 48 x 1 024 =49 152 octets ; la différence est, en effet, utilisée par 
l’Oric — 1 lui-même pour ses diverses tâches internes. 


Si vous deviez introduire en mémoire des programmes un peu longs, il vous fau- 
drait vérifier qu’ils y trouveront suffisamment de place. Ainsi, n’employez pas une 
cassette de programme marquée 48 K avec un Oric — 1 de 16 K seulement. Par con- 
tre, l’inverse ne pose aucun problème : vous pourrez utiliser un programme de 16 K 
avec une mémoire centrale de 48 qui sera, alors, surabondante. 


Il nous faut cependant encore vous donner une précision à propos des mémoires 
centrales. Sachez qu’on les classe en deux grandes catégories : 


e Les mémoires vives dans lesquelles vous pouvez enregistrer des informations à 
volonté, et les lire, bien entendu. Elles sont affublées du sigle RAM (prononcez 
« rame »). C’est d’elles que nous avons traité ci-dessus, sans vous l’avoir précisé. 


e Les mémoires mortes : vous ne pouvez plus rien y enregistrer car le fabricant l’a 
fait une fois pour toutes, et c’est définitif. Ces mémoires dites mortes, appelées 
aussi ROM (prononcez « rome »), contiennent des données qu’on ne peut modi- 
fier ; comme les pages imprimées d’un livre, on ne peut que les lire. Dans l’Oric-—1, 
elles stockent le langage Basic. 


C’est bien pratique que les ROM soient indélébiles. Car les RAM, elles, ne conser- 
vent leur contenu que pour autant que l'ordinateur reste sous tension. Dès que vous 
le débranchez, ne serait-ce qu’une fraction d’instant, elles perdent les informations 
qu’elles stockaient. 


Les mémoires vives sont affligées de ce 
dernier défaut, qu’on appelle la « volatilité ». 


Vous devinez, maintenant, pourquoi on emploie des mémoires externes, encore 
appelées mémoires périphériques, telles que des cassettes de bande magnétique ? 
Les informations rangées sur bande magnétique peuvent être lues et relues à tout 
moment : elles ne sont pas ”’volatiles’””, elles. Lorsque vous remettrez votre micro- 
ordinateur sous tension, ses mémoires vives centrales ne contiendront plus rien ; 
vous pourrez alors les recharger avec le programme se trouvant sur support magné- 
tique. Nous allons vous montrer comment dans le chapitre suivant. 


POUR FAIRE CONNAISSANCE AVEC L’ORIC 15 





5. Clavier et écran 


Revenons un moment sur le clavier et l’affichage. Votre Oric — 1 est-il en service et 
le téléviseur aussi ? Fort bien. Frappez donc l’alphabet, puis les chiffres de 9 à 9 
(oui, nous allons barrer systématiquement le zéro), puis à nouveau l’alphabet : cela 
vous obligera à repérer l’emplacement des touches mais va aussi permettre de 
compter combien de caractères peuvent être inscrits sur une ligne : 













Les caractères se placent à 
partir de la 3e position 


ABCDEFGHI JKLMNOPQRSTUVWXYZ9123456789AB 


Après la frappe du 
38e caractère, le 

curseur revient automati- 
quement à la ligne … 









… Maïs il se place, lui, en 
ère position 






La conclusion est évidente : une ligne d’écran contient 49 ’’colonnes’” mais le texte 
n’en utilise que 38. Vous pouvez continuer à frapper la même séquence, par exem- 
ple : attention, l’Oric — 1 retournera à la ligne mais n’acceptera que 78 caractères 
répartis sur 3 lignes. 


Dès le second retour à la ligne (76 caractères), 
sa sonnette vous prévient qu’il arrive au 

bout de ses possibilités d’accueil. Encore 
deux caractères, deux coups de sonnette, 

et ce sera tout ! 


Si vous vous entêtez et frappez un 79° caractère, il l’affichera maïs le fera immédia- 
tement suivre d’une barre oblique inversée signifiant qu’il annule la ligne, n’en tient 
pas compte : 





LMNOPQRSTUVWXY 
NOPQRSTUVWXYZ9 


Le curseur revient 
ici 








mo 
ES 
NN 
De 

+ 


Barre d'annulation : il y a 
trop de caractères 


Ceci nous permet de définir : 


e Une ligne physique de 38 caractères sur l’écran. 


LIGNE PHYSIQUE e Une ligne logique qui va, elle, jusqu’à 78 caractères répartis sur trois lignes. 


Remarquez, maintenant, les quatre touches encadrant la barre d’espacement et 

LIGNE LOGIQUE marquées de flèches — Ÿ Î et — et frappez-les : elles emmènent le curseur dans le 

sens indiqué. Notez que +-, contrairement à DEL, ne provoque pas l’effacement du 

caractère sur lequel le curseur passe ; vérifiez-le en emmenant le curseur sur du 
texte déjà frappé. 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





CTRL 


MINUSCULES 
MAJUSCULES 













FORMAT DE L'ECRAN 





Voici le haut de l’écran 


Expérimentez aussi les touches marquées de symboles ; en frappe directe, vous 
obtenez le symbole du bas ; avec SHIFT (maintenez SHIFT enfoncée et frappez la 
même touche), vous obtenez le symbole du haut. 


Mais peut-être voudriez-vous écrire en minuscules et non plus en majuscules ? Qu’à 
cela ne tienne, mais pour cela, il faut employer la touche CTRL (à gauche du cla- 
vier), qui signifie contrôle (ou plus exactement, commande). Elle s’utilise comme 
SHIFT : frappez-la et maintenez-la enfoncée, puis frappez sur une autre touche, et 
relâchez le tout. 


Pour passer aux minuscules, frappez CTRL 
et le T, ce que nous indiquerons par 
CTRL/T. Dès lors, tous les caractères 
alphabétiques vont s’inscrire en minuscules. 


Désormais, votre clavier est semblable à celui d’une machine à écrire : toutes les 
frappes de touches alphabétiques donnent des minuscules. Si vous voulez passer 
aux majuscules, il faut frapper à la fois SHIFT et la lettre voulue. Les caractères 
autres que les lettres ne sont pas affectées. 

Si vous voulez revenir au clavier « tout majuscules », il faut refrapper la même 
combinaison : CTRL/T. 


Pour revenir aux majuscules, refrappez 
CTRL/T. Dès lors, tous les caractères 
alphabétiques viendront en majuscules. En 
plus, le haut de l’écran vous indiquera 

« CAPS ». 


Les lettres CAPS viennent pour « capitales », mot d’imprimerie signifiant majus- 
cules. Cela donnera : 






CAPS vient ici, en blanc 
sur fond noir 










Dans l‘écran utile, le texte s'écrit 
en noir sur fond blanc 






Le choix entre majuscules et minuscules dépend pour beaucoup de votre goût per- 
sonnel. Mais toutes ces frappes n’ont-elles pas déjà bien rempli l’écran ? Si tel n’est 
pas encore le cas, continuez : vous constaterez que l’écran étant plein, une nouvelle 
ligne apparaissant en bas « chassera » la ligne du sommet qui disparaîtra, toutes les 
autres remontant d’un cran. Comptez alors les lignes disponibles (y compris celles 
qui ont pu être sautées) : il y en a exactement 27 sur l’écran « principal », plus la 
28° qui vous indique « CAPS ». 


Le format de l’écran, en mode dit « texte », 
est ainsi de 28 lignes sur 40 colonnes. 


La ligne supérieure, au-dessus du cadre principal, servira surtout pour l’affichage 
de messages divers. 


POUR FAIRE CONNAISSANCE AVEC L'ORIC 17 








RETURN 





Nous vous parlerons ultérieurement de la touche ESC et de toutes les combinaisons 
possibles de CTRL, car nous en terminerons ici avec la touche la plus importante 
peut-être, celle marquée RETURN, soit retour. Elle correspond au retour à la ligne 
des machines à écrire mais surtout, c’est elle qui vous servira à dire à l’ordinateur 
« Je viens de terminer un ordre ; prends-le en compte maintenant ! ». Pour cela, 
vous frapperez sur RETURN ; tant que vous ne l’aurez pas fait, l’Oric — 1 ne saura 
pas qu’il doit passer à exécution. Vous en apprécierez très vite l'usage. Si, en expé- 
rimentant le clavier, vous avez frappé sur RETURN, il est fort probable que le 
Basic de l’'Orie — 1 n’aura rien compris à ce que vous avez voulu faire et vous aura 
retourné ce fameux message « ?SYNTAX ERROR » qui signifie à peu près « Si 
vous voulez me commander, apprenez d'abord à le faire correctement ! » 


QUESTIONS SUR LE CHAPITRE I 


Vous pensiez en avoir terminé avec ce chapitre ? Que non : nous ne vous ferons 
grâce de rien, pas même de questions de cours ! En voici quelques-unes, qui évo- 
quent des notions essentielles traitées dans ce chapitre. Vous en trouverez d'ailleurs 
à la fin de tous les chapitres de ce livre. 


Dans tous les cas, ces questions resteront très simples et, pour y répondre, il vous 
suffira de cocher la case correspondante. Si vous marquez un doute, n "hésitez pas à 
relire le passage correspondant dans le chapitre. En voici donc une première série : 
cochez la case en face de la bonne réponse : 


. Le curseur sert à : 
{|} Exécuter des dessins sur l’écran 
{} Marquer l'emplacement de la prochaine frappe 


Efface 
| Efface 


. La touche DEL : 
[] 
{ 


le caractère précédent 
le caractère suivant 


. Pour utiliser la touche SHIFT, vous devez : 


[ 


| 
} 
| 
] 


La frapper, la relâcher, puis frapper sur une autre touche 
La maintenir enfoncée en frappant sur une autre touche 


. Dire d’une mémoire qu’elle est volatile signifie : 
|] Qu'elle est comparable à un animal de basse-cour (en quoi ?...) 
|} Qu'elle perd ses informations si on débranche l’ordinateur 


5. Le format de l’écran, en mode texte, est de : 


28 lignes maximum sur 40 colonnes 
64 lignes sur 80 colonnes 


Avez-vous bien répondu à tout ? Ce n'était pas bien difficile, avouez-le ! 
Vérifiez cependant vos réponses. 





Réponses page 18 


18 PRATIQUE DE L'ORIC 1 ET 36 PROGRAMMES 





REPONSES AUX QUESTIONS SUR LE CHAPITRE 1 
}l. Le curseur sert à marquer l’emplacement de la prochaine frappe. 


2. La touche DEL efface le caractère précédent. Le curseur fait alors marche 
arrière. 


3. Pour utiliser SHIFT, il faut maintenir cette touche enfoncée, puis en frapper une 
autre. 


4. Une mémoire est dite volatile lorsqu’une coupure de l’alimentation lui fait per- 
dre... la mémoire. Il n’y a là rien à voir avec des volatiles de basse-cour. La 
preuve ? Volatil s’écrit sans e au masculin (pour l’adjectif qualificatif). 


5. Le format de l’écran, pour l’Oric — 1, est de 28 lignes sur 40 colonnes. 


Combien d'erreurs avez-vous commises ? Zéro ? Tous nos compliments. Une ou 
deux : bien, bien, bien. Trois ou quatre : pourquoi ne pas relire ce chapitre ? 
Cing : mais au fait, l’avez-vous bien lu une première fois ? 


CHAPITRE II 


MAGNÉTOPHONE 


ET CASSETTES DE PROGRAMMES 


Disposez-vous de cassettes pré-enregistrées pour l’Oric ? Des jeux (« Les envahis- 
seurs »..) ou des programmes d'enseignement (« Maths »..) ? Vous êtes immé- 
diatement en mesure de les employer car pour cela, vous n'avez pas besoin d'en 
savoir davantage sur le fonctionnement de l’ordinateur. Vous allez, ainsi, pouvoir 
vous perfectionner en mathématiques, ou vous battre contre des soucoupes volan- 
tes. 


C'est non seulement le « chargement » d’un programme qu'on va aborder ici, mais 
aussi la « sauvegarde », c’est-à-dire le transfert sur bande magnétique (non « vola- 
tile ») d’un programme que vous avez créé, par exemple. 

Le mode d'emploi de ce chapitre est ainsi le suivant : lisez immédiatement sa pre- 
mière partie mais, parce qu’on n’a pas encore étudié la programmation, sautez la 
seconde. Vous y reviendrez par la suite, dès que le besoin s’en fera sentir, c'est-à- 
dire dès que vous aurez des programmes à « sauvegarder ». 


Principaux thèmes étudiés 


Connexion d’un magnétophone Démarrage à chaud 


Chargement 
CLOAD 
Vitesse lente 
,S 


d’un programme Démarrage à froid 
Sauvegarde d’un programme 
CSAVE 
Démarrage automatique 


Ré-initialisation CSAVE AUTO 


RESET 


CONNEXION D'UN 


MAGNETOPHONE 








1. Le magnétophone 


Votre Oric utilise des cassettes tout à fait standards, telles que celles sur lesquelles 
vous enregistrez de la musique. Tout au plus conseillera-t-on alors d’utiliser des 
bandes de bonne qualité. 


Le magnétophone sera votre magnétophone habituel. Les appareils très bon mar- 
ché donnent d’excellents résultats. Il vous faut cependant connecter le magnéto- 
phone à l’Oric et pour cela, nous vous conseillons d'employer le câble que vous 
fournit le fabricant. C’est un câble terminé à ses deux extrémités par des fiches ron- 
des (aux normes « DIN »), à trois broches mâles. Insérez l’une de ces fiches dans la 
prise femelle à 7 broches, elle, située à l’arrière de l’Oric, la seconde dans la prise 
femelle correspondante de votre magnétophone, qu’elle soit à 3 ou 5 broches, peu 
importe. 


20 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 













Ici, vous aviez 
branché 
l'alimentation 







Ici vous 
aviez branché 
le téléviseur 
















Fiches «DIN» 
à 3 broches 





Votre 
magnétophone 





L’Oric, vu de derrière, afin de vous montrer où connecter le magnétophone. 


Méfiez-vous des cordons qu’on trouve dans le commerce, avec cinq broches au lieu 
de trois ; dans ce cas, en effet, des broches sont souvent court-circuitées et vous 
éprouverez des surprises les plus diverses (l’auteur en a fait l’expérience et a perdu 
le son...). 


Par contre, si votre magnétophone est muni d’une entrée de commande à distance 
(mise en marche et arrêt du moteur), n’hésitez pas à employer un connecteur 7 bro- 
ches, branché comme la notice de l’Oric le décrit. Vous vous épargnerez ainsi la 
peine de mettre le magnétophone en marche puis de l’arrêter, votre ordinateur s’en 
chargeant pour vous. Dans ce qui suit, nous allons supposer que vous ne disposez 
pas de télécommande et nous allons vous imposer cette « corvée » en plus. 


Sur le magnétophone lui-même, vous n’aurez qu’à ajuster le volume sonore, qui ne 
nous a pas paru critique du tout. L’auteur a obtenu d’excellents résultats en prome- 
nant le bouton de volume sonore pratiquement sur tous les réglages possibles. 
Réglez-vous cependant, par souci de sécurité, vers le milieu de la gamme ou un peu 
au-delà ; nous sommes restés sur le réglage 6 pour un bouton gradué de 9 à 19. 


Un conseil : les têtes de lecture-écriture de 
votre magnétophone doivent être propres : 
nettoyez-les de temps à autre. 


2. Le chargement d’un programme 


On vous a déjà dit que les mémoires internes (vives) des ordinateurs étaient *’volati- 
les”. Lorsque vous mettrez votre Oric en service, ses mémoires vives ne contien- 
dront rien. Par contre, vous disposez peut-être d'une cassette pré-enregistrée. 


MAGNETOPHONE ET CASSETTES DE PROGRAMMES 21 





Si votre Oric est une version 16 K, il 
faudra utiliser une cassette contenant un 
programme ne dépassant pas 16 K. Vérifiez 
sur votre cassette si elle est destinée à une 
version 16 K (ou 48 K) : c’est généralement 
indiqué très lisiblement. 


Une fois sélectionnée la cassette voulue, on va transférer en mémoire centrale le 
programme qu’elle contient. 


Cette opération s’appelle le chargement. 
CHARGEMENT Vous l’exécuterez chaque fois que vous 

D'UN PROGRAMME voudrez employer un autre programme 

à partir d’une mémoire périphérique (d’une 

cassette, dans notre cas). 





Placez la cassette dans le magnétophone. Très souvent et par sécurité, une cassette 
est enregistrée sur ses deux faces avec le même prograrnme ; vous pourrez donc 
employer indifféremment n’importe laquelle. Rembobinez la cassette, puis respec- 
tez les instructions suivantes : 


1 — Frappez au clavier le mot CLOAD. Il provient de l’anglais LOAD, pour char- 
gement, précédé par un € signifiant cassette. 


CLOAD 2 — Si votre cassette ne contient qu’un seul et unique programme, frappez ensuite 
deux fois des guillemets après CLOAD (vous pouvez laisser un espace entre 
CLOAD et la première paire de guillemets). 


Vous obtiendrez les guillemets avec la 
touche SHIFT. 


En réalité, l’ordre CLOAD complet demande qu’on précise le nom du programme, 
écrit entre guillemets. Celui-ci est inscrit sur la cassette. Si vous n’indiquez pas de 
nom, l’Oric va charger le premier programme qu’il rencontrera. S’il n’y en a qu’un, 
c’est forcément le bon. 

Vous pouvez, cependant, indiquer le nom ; deux cas se présentent ici : 


e La bande comporte plusieurs programmes. En indiquant le nom de celui que 
vous voulez charger, l’Oric le recherchera et ne chargera que celui-ci. 


e Elle ne contient qu'un seul programme : ce sera une vérification. 


Attention : si vous frappez le nom, 
respectez scrupuleusement son orthographe 
et même les espaces. 


La moindre erreur serait interprétée par l’Oric comme un autre nom, et l’ordina- 
teur ne retrouverait pas le programme voulu. 


3 — Maintenant, vérifiez sur la cassette si ce nom n’est pas suivi par une virgule, 
puis par la lettre S. Ce sera très généralement le cas. Frappez alors une virgule puis 
un S majuscule. 


22 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


L’Oric dispose de deux vitesses pour 
enregistrer et lire des cassettes, une rapide 
et une lente. La lente fournit des résultats 
bien plus fiables, d’où son emploi. 
« Lente » se dit « slow », en anglais, 
d’où le S. 





Si vous ne frappiez ni la virgule, ni le S, l’Oric passerait la grande vitesse. et bien 
sûr, n’aurait plus le temps de lire une bande enregistrée en basse vitesse. 

En supposant que vous veniez de mettre votre ordinateur en service, l’écran devrait 
afficher : 










Ça, c'est pour un 48 K. 
Pour un 16 K, ce sera moins 







ORIC EXTENDED BASIC V1.9 
C 1983 TANGERINE 









47879 BYTES FREE 


Ready 
CLOAD "", 











Vous venez de 


L Le curseur est 
frapper ceci ici 


ICI 









Notez que nous n’utilisons pas de nom de programme, dans les guillemets, pour 
une autre raison « nécessaire et suffisante » : nous ignorons lequel vous allez 
employer. 


4 — Maintenant, frappez sur la touche marquée RETURN. 


C’est la touche RETURN qui indique au 
Basic qu’il doit acquérir l’ordre frappé, 
puis l’exécuter. Sans RETURN, rien ne 
se passera. 


Aussitôt, l'ordinateur part à la recherche du programme, ce qu’il a l’obligeance de 
vous indiquer sur sa 28° ligne (celle du haut) : 





«Je cherche …» : c'est écrit en 
SR nee blanc sur fond noir 







5 — Mais il ne peut rien trouver, car vous n’avez pas encore mis le magnétophone 
en marche, en mode « lecture ». Faites-le donc. 

Dès lors, le Basic « lit » la bande ; dès que le programme est trouvé, le message 
change et devient : 








«J'ai trouvé le programme et je suis en train 
RER ERA EE de le charger...» Es 





MAGNETOPHONE ET CASSETTES DE PROGRAMMES 23 





Si vous avez donné le nom du programme, ce même message est suivi de ce nom, 
par exemple *’ DEMONSTRATION” : 





Armez-vous de patience : pour un programme destiné à une mémoire de 48 K et en 
mode lent (S), il faudra cinq bonnes minutes. A l’issue du chargement : 


e le programme démarrera automatiquement. Le plus souvent alors, c’est lui qui 
vous indiquera ce que vous devrez faire. Par exemple et pour lutter contre des sou- 
coupes volantes, il vous dira que vous devez frapper sur la barre d’espacement pour 
envoyer le faisceau laser contre les envahisseurs. 


e sinon, l’Oric vous indiquera que le chargement est terminé en affichant son mes- 
sage habituel READY, ce qui donnera (si l’on ne retient qu’une fraction de 
l’écran) : 












Ça, c'est ce qui figurait déjà) __ — 
sur l‘écran.. 





. Voici maintenant le 
nouveau «Je suis prêt !», 
après chargement 


6 — Dans tous les cas, stoppez alors le magnétophone. 


7 — Si le programme chargé ne démarre pas automatiquement, frappez les trois 
lettres RUN, ce qui signifie ‘’En marche’”’, en anglais, puis frappez la touche 
RETURN et il sera ’’lancé”’. 


En cas d’erreur, n’hésitez pas à recommencer 
toutes ces opérations. 


Si vous frappez mal l’ordre, vous obtiendrez peut-être le message ?SYNTAX 
ERROR. Recommencez alors. Ou bien vous constaterez que toute la bande a été 
lue et que le message sur la ligne supérieure est toujours ?’SEARCHING...”” (je 
cherche...) ; demandez-vous alors si vous n’avez pas omis de connecter le magnéto- 
phone au micro-ordinateur. 


L'ordinateur est têtu : après un ordre de 
chargement, il cherche un programme et le 
veut ! Tant qu’il ne l’aura pas trouvé, il 
continuera à chercher sans accepter d’autres 
ordres. 


Le clavier est alors ”’inerte”’, ne répond plus à vos frappes. Pour pouvoir recom- 
mencer et passer de nouveaux ordres, débranchez un instant l’ordinateur, puis 
RE-INITIALISATION remettez-le sous tension, ce qui va le réinitialiser, comme l’on dit : vous retrouve- 
rez le premier écran. 





Il existe toutefois une méthode plus élégante pour ré-initialiser l’ordinateur, mais 
elle n’est pas plus pratique, vous allez en juger : retourner complètement l’Oric, 
sens dessus-dessous. A l’extrémité droite du boîtier se trouve une petite ”’fenêtre’” 
rectangulaire en face de laquelle a été placé un bouton-poussoir (qu’on ne distingue 
pas). Introduisez un crayon dans cette fenêtre et poussez le bouton. 


24 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 
















Senna roman ann 





Voici la 
fenétre 
sous 

laquelle se 
trouve le 
poussoir 









+ 
al 
ê 












po 


A SERVICE AETURS TO. OMC Pi LTD PO BOX 492 CAMEMOOS CB4 14 






Pour ré-initialiser la machine, vous pouvez agir sur le poussoir accessible par le dessous de l’Oric. 


Aussitôt, l’écran s’efface et vous obtenez : 





Dès lors, vous pouvez recommencer. 


Cette action s’appelle le RESET (remise 


RESET à zéro). Le RESET ne fait pas perdre à la 
mémoire centrale ce qu’elle pouvait déjà 
contenir, contrairement à une interruption 


de l’alimentation. 


Servez-vous du RESET chaque fois que vous perdez le contrôle de l’ordinateur 
Cela vous sera très utile, surtout lorsque vous programmerez. 


Le RESET est encore appelé un « démarrage 
à chaud ». Le « démarrage à froid » est 
celui qu’on provoque en remettant l’Oric 


sous tension. 


DEMARRAGE 


A CHAUD, A FROID 





Nous supposons maintenant que votre programme « tourne » et que vous êtes en 
train d’essayer de poser votre super-avion 787 sur la piste d’atterrissage. L’auteur 


souhaite que vous réussissiez mieux que lui : il a « crashé » l’avion, ce qui lui a valu 
en cours de manœuvre le message « Attention, cet avion est encore sous 


garantie ! ». 


MAGNETOPHONE ET CASSETTES DE PROGRAMMES 25 





3. Sauvegarde d’un programme 


Nous allons vous montrer, maintenant, comment transférer sur bande magnétique 
un programme se trouvant en mémoire centrale. Ce sera soit un programme que 
vous venez de créer, soit tout autre programme que vous avez précédemment 
chargé en mémoire centrale à partir d’une cassette et dont vous voulez faire une 
copie sur une autre cassette. 


Si vous ne faites qu’aborder ce livre, vous n’avez pas encore commencé à program- 
mer ; dans ce cas, nous vous conseillons de sauter ce qui suit. En effet, nous allons 
faire appel à quelques notions qui ne seront étudiées que dans les chapitres ulté- 
rieurs (par exemple, les ordres PRINT, LIST...). Dès que vous aurez débuté la pro- 
grammation, vous reviendrez à ce texte ; nous vous indiquerons à quel moment. En 
effet, nous avons jugé préférable de regrouper en un unique chapitre tout ce qui a 
trait aux cassettes. 


Le rangement sur bande magnétique d’un 


SAUVEGARDE programme se trouvant en mémoire centrale 
D'UN PROGRAMME s’appelle la « sauvegarde ». 





Créons un programme ultra-simple afin de le sauvegarder (c’est inutile si vous avez 
votre propre programme en mémoire centrale : servez-vous alors de celui-là). Ce 
programme comporte deux lignes : 


Afin de le sauvegarder sur cassette, vous pouvez ou non lui décerner un nom, obli- 
gatoirement écrit « entre guillemets ». 


Si vous ne lui attribuez pas de nom, 

il faudra quand même frapper les 
guillemets nTT mais sans rien écrire dedans, 
sans même placer un espace à l’intérieur : 
le Basic considérerait cet espace comme 

un nom ! 


Appelons ce programme « ADIEU ». L’ordre de sauvegarder s’écrit CSAVE, avec 
SAVE pour sauvegarder précédé de C, pour cassette. L'ordre complet serait donc : 


CSAVE 


CSAVE “ADIEU” 










Le curseur est là : vous n'avez 
pas encore frappé sur RETURN, 
donc l'ordre de sauvegarde n'est pas 
encore exécuté 





Vous pourriez dès lors lancer l’enregistrement : celui-ci se fera très rapidement, à la 
vitesse de 2 400 « bauds », ce qui correspond à quelque 200 caractères par seconde. 
Pour travailler à cette relativement grande vitesse, il faut un matériel impeccable : 
magnétophone (ses têtes, surtout) et bande. Comme, en général, tel n’est pas le cas, 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


nous vous conseillons par sécurité d’adopter la vitesse « lente », de 300 bauds, 
donc 8 fois inférieure. Encore faut-il indiquer au Basic qu’on change de vitesse. Or, 
le mot « lent » se dit « s/ow », en anglais ; vous ajouterez donc à la suite de l’ordre 
une virgule, puis un S, ce qui donne : 













Par contre, 
vous pouvez mettre 
un espace après 

les guillemets si vous 
le désirez, pour le coup d'œil 






Attention : pas d'espace 
dans les guillemets 





Dès lors, le processus est le suivant : 


1. Mettez une cassette (vierge, de préférence) dans le magnétophone. 


2. Rembobinez-la, remettez le compteur à zéro si votre magnétophone en possède 
un. Vous pouvez enregistrer n’importe où sur la bande mais n’oubliez pas de noter 
alors l’indication du compteur. 

Attention : toutes les bandes commencent par une petite amorce sur laquelle on ne 
peut rien enregistrer. 


3. Mettez le magnétophone en marche en position enregistrement (et non lecture : 
ne vous trompez pas). Laissez passer éventuellement l’amorce, puis frappez sur 
RETURN. L'ordinateur va alors exécuter l’ordre ; il commence par émettre un 
signal servant à stabiliser le fonctionnement du magnétophone, puis envoie la salve 
des ondes traduisant votre programme. Pendant le court instant que cela dure, 
vous lirez sur la ligne supérieure de l’écran ; 





ou alors, si vous avez donné le nom du programme : 





MAGNETOPHONE ET CASSETTES DE PROGRAMMES 27 


4, Stoppez alors le magnétophone car la sauvegarde est terminée. 


S. Indiquez, sur la cassette, /e nom du programme, où il commence et où il finit sur 
la bande, et indiquez enfin la vitesse. Par exemple, ajoutez « ,S » pour préciser 
qu’il s’agit de la vitesse lente. 


N’omettez jamais de porter sur vos cassettes 
toutes les indications utiles. Vous ne vous 
énerverez pas, ensuite, à rechercher 

« quelque part » un programme donné. 


Au cours de la sauvegarde et selon le type de magnétophone que vous possédez, 
vous entendrez ou non la « modulation », les trains d’ondes qui sont transférés. Le 
bruit en est plutôt désagréable ! Il en ira de même, d’ailleurs, lors de l’opération 
inverse, le chargement. 


6. Voulez-vous prendre une précaution supplémentaire ? Sauvegardez une seconde 
fois ce même programme. 


Cela étant fait, on va vérifier que tout a bien fonctionné. 


4. Les règles du chargement 


Afin de vérifier que la sauvegarde s’est correctement déroulée, on va effacer la 
mémoire centrale, afin de recharger ce programme. 


Pour effacer la mémoire centrale, utilisez l’ordre NEW qui indique à l’ordinateur 
qu’on veut faire le ménage dans la mémoire, la vider, afin de charger un nouveau 
programme. Frappez NEW, puis RETURN : 





NEW 







Ici, vous avez 
fait RETURN 


Ready 





Par acquit de conscience, vérifiez que la mémoire est bien vide en demandant le /is- 
tage de ce qu’elle contient, ce qui se commande LIST ; n’oubliez pas le RETURN : 


LIST 






Aucun listage n'apparait 
car il n’y a plus rien en 


Ready mémoire 


Le processus de chargement est exactement le même que celui qu’on a vu au début 
du chapitre. Rembobinez la bande et placez-vous au point de départ du pro- 
gramme, puis frappez l’ordre : 










Vous avez fait 
RETURN 
ici 


28 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








ou encore, si vous voulez donner le nom : 


CLOAD “"ADIEU",S 


Il faut obligatoirement charger un 
programme avec la même vitesse qu’on a 
utilisée pour sa sauvegarde. Ce sera donc 
la vitesse lente, indiquée par le suffixe « ,S ». 


Dès le RETURN, le curseur revient à la ligne et la 28° ligne, celle au-dessus de 
l’écran habituel, indique « SEARCHING... » (« je cherche le programme »). 
Démarrez alors le magnétophone en position lecture (et non enregistrement). 


Notez bien cette différence : 

e A la sauvegarde, on démarre d’abord 

le magnétophone avant de frapper RETURN. 
e Au chargement, on frappe d’abord 
RETURN, puis on lance le magnétophone. 


L'ordinateur rencontrant le programme va afficher, tout en haut de l’écran, 
« LOADING... » suivi du nom de ce programme si vous l’avez indiqué, et à l’issue 
du chargement, il ré-affichera un Ready sur l’écran. Stoppez alors le magnéto- 
phone. 


Si vous avez fourni le nom du programme, 
l’ordinateur ne chargera pas le premier qu’il 
rencontre mais uniquement celui dont le nom 
est en conformité absolue avec celui que vous 
avez donné. 


Il est peut-être dommage que l’Oric — 1 n’affiche pas, au passage, les noms des pro- 
grammes qu’il croise et qui ne sont pas demandés. Mais on ne peut pas avoir toutes 
les qualités. 

Bref, le programme se trouve à nouveau en mémoire centrale. Vérifions-le en fai- 
sant un LIST, par exemple : 








A la fin du chargement 
l’Oric affiche ce «prêt !» 







PANIONE) 





Voici le listage exact 
du programme que vous aviez 
sauvegardé 








Ce listage est parfaitement correct. Vous auriez aussi pu lancer ce programme avec 
RUN, ce qui aurait donné : 


MAGNETOPHONE ET CASSETTES DE PROGRAMMES 29 















Ready 
RUN 
BONJOUR 
En effet, le RUN 
Ready affiche «Bonjour» 






Il est même possible de faire automatiquement démarrer un programme à l'issue de 
son chargement, simplement en ajoutant à la fin de l’ordre de sauvegarde le mot 

DEMARRAGE AUTO. Faites-en l’expérience : puisque votre programme est en mémoire centrale, 
AUTOMATIQUE sauvegardez-le à nouveau mais en faisant, cette fois (repérez bien où vous l’enregis- 
trez sur la bande) : 





Puis, effacez la mémoire centrale avec NEW, et rechargez le programme. Automa- 
tiquement, il démarrera, ce qui donnera : 








Ready 

CLOAD "“",S 

BONJOUR Aussitôt chargé, le 
head programme est exécuté 


Vous comprenez, maintenant, pourquoi les cassettes pré-enregistrées vous offrent 
souvent des programmes à auto-démarrage : elles ont été enregistrées avec cet ordre 
AUTO. 


Ajoutons encore que tous les chargements ne seront pas forcément réussis. Dans ce 
cas, l’Oric vous préviendra en affichant, après l’ordre de chargement : 


FILE ERROR / LOAD ABORTED 
Ready 









«{l y a une erreur quelque 
part : j'ai stoppé le chargement !» 





Il ne vous restera plus, alors, qu’à recommencer, peut-être en essayant la seconde 
copie du même programme si l’on suppose que la bande puisse être, en un passage 
quelconque, défectueuse. 


PRATIQUE DE L'ORIC 1 ET 36 PROGRAMMES 





QUESTIONS SUR LE CHAPITRE II 


Ici, exceptionnellement, vous n'aurez pas droit à nos traditionnelles questions. 
Jouez plutôt aux « Envahisseurs », par exemple (et, s’il vous plaïf, ne restez pas 
forcément sur les vitesses de jeu pour débutants !). 

N'oubliez pas que le jeu est une activité intéressante à de nombreux points de vue, 
ne serait-ce que pour bien se familiariser avec l’ordinateur. 


REPONSES AUX QUESTIONS SUR LE CHAPITRE III 

1.PRINT est un ordre d’affichage sur l’écran. 

2. PRINT ”’3+2”° affiche 3 +2 (reproduction, puisqu'il y a des guillemets). 
3. PRINT 3 +2 affiche 5 (pas de guillemets, donc exécution de l’opération). 


4. PRINT ’’3+2 affiche 3 +2. Bon enfant, le Basic accepte que vous ne refermiez 
pas les guillemets si vous faites un RETURN. 


5. Le symbole ? remplace le mot PRINT. Donc, vous afficherez 5 ; il n’y a pas 
d’erreur. 


6. Par contre, il y en a une, ici, car on a confondu le lettre O avec le chiffre zéro. La 
machine s’en sort en additionnant 19 + 1 et affiche 11, puis s’occupe de la lettre O 
qu’elle considère comme une variable à laquelle on n’a rien affecté encore, et lui 
décerne un zéro ! 

7. Rappelez-vous : le symbole de la multiplication n’est pas le X mais l’astérisque 
(*). La machine répondra 7 @ car pour elle X3 est aussi le nom d’une variable qui 
n’a reçu aucune affectation. 

8. C’est une élévation à la puissance 3 ; vous lirez donc 27. 

9. L'écran affichera 9/3 = 6. 


19. Dans un ordre PRINT, la virgule sert à /a fois à séparer des constantes et à 
introduire 4 espaces dans leur affichage. Les deux réponses sont bonnes. 


11. A$ est un nom de variable chaîne, grâce au symbole $ 


12. Oui ; en fin de course, T vaut 1. 


CHAPITRE III 


L'ORDINATEUR EN « MODE DIRECT » 


Voici le premier chapitre consacré à la programmation, dans ce qu’on appelle le 
« mode direct ». On donne un ordre à l'ordinateur et, dès la frappe de 
« RETURN », il l’exécute. On a déjà exploité ce mode direct avec les cassettes, 
aussi va-t-on en profiter pour examiner, ici, d’autres instructions fondamentales. 
Le chapitre suivant abordera le mode « programme ». 


Principaux thèmes étudiés 


Guillemets Elévation à puissance Variable numérique 
PRINT Racine carrée Constante chaîne 
RETURN SQR Variable chaîne 

Syntaxe Virgule dans un PRINT Affectation 

Annulation d’une ligne Effacement de l’écran Symbole d’affectation (=) 
CTRL/X CTRL/L Noms de variables 

Point d’interrogation pour CTRL/H Mots réservés 


PRINT CTRL/I Chaînes de caractères 
Mode direct CTRL/J Chaîne vide 
Rôle des guillemets CTRL/K Concaténation de chaînes 
Point-virgule CTRL/M Symbole + de concaténation 
Zéro et lettre O Chaînes de caractères Sonorisation des touches 
Multiplication (+) Symbole $ CTRL/F 
Division (/) Constante Effacement d’une ligne 
Point décimal Variable CTRL/N 
Virgule décimale Constante numérique 





1. L’instruction PRINT 


Avec ce chapitre, nous abordons la programmation de l’Oric—1, dans ce langage 
qu’on appelle le Basic et dont nous avons parlé au début de ce livre. 


Commencez donc par frapper au clavier les mots suivants, en respectant rigoureu- 


sement cette façon de les écrire ; cela signifie qu’il faudra placer des espaces comme 
GUILLEMETS ils figurent ici, pas davantage (après tout, il sera toujours temps d’essayer après), 
ainsi que des guillemets. Les guillemets sont obtenus avec la touche SHIFT : main- 


tenez SHIFT enfoncée, puis frappez sur la touche marquée de guillemets, et relâ- 
chez le tout. 


Rappelez-vous aussi que l’espace arrière, 
marqué DEL, sert à effacer le caractère 
précédent. 


32 PRATIQUE DE L'ORIC 1 ET 36 PROGRAMMES 








Voici donc ce que vous devez frapper et ce qui apparaîtra sur l’écran, à supposer 
que vous veniez de mettre votre ordinateur en service ; le mot nouveau, un ordre du 
Basic, est PRINT, ici ; respectez bien son orthographe : 













ORIC EXTENDED BASIC V1. 
C 1983 TANGERINE 








Le curseur 
vient ici 





47870 BYTES FREE 












Frappez cette 
ligne 






Ready 
PRINT "BONJOUR" 









Mettez le mot BONJOUR 
«entre guillemets» 





Le mot PRINT est un mot anglais signifiant « imprimer ». On l’utilisait aux âges 
héroïques de l’informatique, quand les écrans étaient rares et chers. On l’a conservé 
PRINT avec les écrans mais dans l’acception afficher. Cet ordre Basic ordonne à la 
machine d’afficher tout ce qui est encadré par les guillemets ; c’est, aussi, la pre- 
mière instruction Basic que vous écrivez. Félicitations ! 


Pour l'instant, l’ordre figure sur l’écran mais n’a pas encore été acquis par le Basic, 
ni donc exécuté. Il manque encore cette indication qu’on pourrait traduire par « À 
RETURN vous de jouer, Basic : prenez cet ordre et faites ce que vous avez à faire ! ». Tout 
cela s’exprime très simplement : il suffit de frapper sur la touche RETURN 
(« retour »). 


La frappe de RETURN fait prendre l’ordre 
en compte par l’ordinateur. Il faudra 
la frapper après un ordre, une instruction. 


On verra que RETURN sert aussi à ramener le curseur à la ligne, au début de la 
ligne suivante, d’où le nom qui lui a été attribué. Frappez donc sur RETURN ; aus- 
sitôt, le Basic obéissant affiche sur la ligne suivante BONJOUR, puis saute une 
ligne et vous indique qu’il est de nouveau prêt, ce qui donne : 


PRINT "BONJOUR" 
BONJOUR 


READY 












Ceci c'est le Basic qui 
l'a affiché, en exécution 
de votre ordre 










la machine attend 


maintenant la suite Essayons maintenant un message plus compliqué ; frappez d’abord la ligne indi- 


quée puis faites RETURN, et vous obtiendrez : 











.. Et pensez à 
frapper ici RETURN 





L'ORDINATEUR EN « MODE DIRECT » 33 








Le le ?s obtiennent) 
avec SHIFT 


SYNTAXE 


A nouveau, la machine a reproduit fidèlement votre message. Il peut être absolu- 
ment quelconque, à la condition d’être encadré par des guillemets ; par exemple : 


N'importe quoi ! 









N'oubliez ni les guillemets, ni 
le RETURN 












Sachez que la machine ne s'intéresse pas 
au sens (au contenu) du message, à la 

« sémantique », mais à sa forme, sa 

« syntaxe ». 


Ainsi, les guillemets lui sont nécessaires. Si vous les oubliez, elle ne comprendra 
plus et vous renverra un message d’erreur : 





PT a A N'oubliez pas 
PRINT ET LES GUILLEMETS ? RETURN 











?SYNTAX ERROR 
Ready Réponse de la machine : 
É «Erreur de syntaxe» car on a omis 


les guillemets D Ed 









A la limite, elle acceptera que vous ne refermiez pas les guillemets si vous faites un 
RETURN : 


PRINT "ET L 
ET LES GUIL 





Ne refermez 
pas les 

guillemets (mais 
ouvrez-les) 









Ready 






Vous obtiendrez aussi un message d’erreur de syntaxe si vous orthographiez mal le 
mot print, ou introduisiez des espaces entre ses lettres, ou l’écriviez en minuscules : 
vérifiez-le. 


Les mots de commandes doivent être 
frappés en majuscules. Ce que vous mettez 
dans les guillemets peut être en minuscules 
ou majuscules, peu importe, l’ordinateur 
respectera votre choix de caractères. 


Rappelez-vous qu’on passe des majuscules aux minuscules, et vice-versa, avec 
CTRL/T (maintenez CTRL enfoncée et frappez sur T). Après le premier retour aux 
majuscules, le mot CAPS (pour « capitales », ce qui signifie majuscules en termes 
d'imprimerie), apparaît en haut et à droite de l’écran. Il disparaît lorsque vous 
revenez aux minuscules. En mode minuscules, vous obtiendrez des majuscules avec 
la touche SHIFT, comme sur un clavier de machine à écrire. 


34 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Si vous commettez trop de fautes dans une ligne, n’hésitez pas à frapper RETURN 
et à la recommencer ; tant pis pour le message d’erreur : vous en obtiendrez bien 
ANNULATION d’autres, vous le verrez. Une autre méthode, plus élégante, consiste à frapper au 
D'UNE LIGNE bout d’une ligne qu’on veut annuler (et avant d’avoir fait RETURN) le code 


CTRL/X (maintenez CTRL enfoncée et frappez X). Le Basic place alors une barre 
CTRL/X 






oblique inversée au bout de la ligne, l’annule, et ramène le curseur au début de la 
ligne suivante. Par exemple : 


Frappez cette ligne … 


7. Que vous annulez en faisant 
CTRL-X qui se traduit par 
ce symbole 








Vous pouvez maintenant 
frapper autre chose 


Dans la ligne ci-dessus, on n’avait même pas mis d’ordre, tel que PRINT. C’est las- 
sant, aussi, de toujours frapper ces cinq lettres. Bon, d’accord : remplacez-les par 
un simple point d’interrogation. 


Dans le code du Basic, un point 


POINT d'interrogation peut remplacer le mot 
D'INTERROGATION PRINT. 


POUR PRINT 





Vérifions-le avec cet exemple : 






N'oubliez pas 
RETURN 


Ready 
? "BONJOUR" 


BONJOUR 
s | 
nes dy Ca a marché | 








On utilisera ce point d’interrogation qui permet d’économiser 4 frappes. 

A propos : vous devez maintenant avoir acquis l’automatisme de la frappe sur 
RETURN, et ce à la fin de chaque ordre. Aussi ne vous le rappellera-t-on plus 
systématiquement, sauf lorsque c’est nécessaire à nos explications. D’autre part, 
vous avez pu constater que le mot « Ready » revient constamment ; nous ne le 
reproduirons plus sur nos «’écrans » sauf, à nouveau, lorsqu'il se révèlera intéres- 
sant à placer. 


Enfin, nous vous proposons une convention 
d’écriture dans nos « écrans » : tout ce que 
vous devez frapper sera indiqué en gras, 
alors que les réponses de la machine ou ses 
messages resteront en maigre. 


Rappelez-vous qu’il ne s’agit que d’une convention, puisqu’en réalité, tous les 
caractères auront le même aspect sur votre téléviseur. 


MODE DIRECT 


Le point d'interrogation 
remplace le mot PRINT 


ROLE DES 


GUILLEMETS 





POINT-VIRGULE 





L'ORDINATEUR EN « MODE DIRECT » 35 


2. Premiers calculs 


Vous avez pu constater que, lorsqu’on frappait un ordre au clavier suivi par un 
RETURN, la machine l’exécutait aussitôt. C’est cela qu’on appelle le mode direct. 


En mode direct, un ordre est aussitôt 
exécuté (après RETURN). On appelle encore 
ce mode « mode immédiat », ou « mode 
conversationnel ». 


Si l’on passe aux chiffres, on l’appellera même « mode calculette », voici pour- 
quoi. Frappez l’addition suivante, sans placer de guillemets, et faites RETURN ; 
surprise : vous n’obtiendrez pas de message d’erreur mais le résultat ! Voici ce que 
cela donne : 







Bien sûr, vous vous rappelez 
qu'il faut faire RETURN ici 


Voici le résultat ! 


Nous avons écrit en gras ce que vous deviez frapper, selon nos conventions. La 
machine a répondu 8 ; heureusement ! Recommencez avec des guillemets, cette 
fois : 





tt line. Est. Avec des guillemets, 
? “5+3" cette fois 


5+3 








Comme précédemment, le Basic s'est 


Ainsi, on peut demander au Basic soit de reproduire la formule (dans des guille- 
mets), soit d’exécuter le calcul (sans guillemets). Combinons ces deux modes, en 
séparant les deux codes par un point-vigurle : 





La première expression entre guillemets est reproduite telle, la seconde sans guille- 
mets est calculée ! 


Notez que le point-virgule sert de séparateur 
« officiel » dans un ordre PRINT. Il évite 
d’avoir à répéter deux fois PRINT, ici. 
L’affichage se fera à la suite, sans retour 

à la ligne. 


Essayons maintenant avec une soustraction, en exécution directe : 


36 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





Curieux, ce zéro … 


La soustraction est classique, maïs pas le zéro. 


En informatique, il ne faut pas confondre le 
ZERO ET chiffre zéro et la lettre O. Aussi écrit-on 
LETTRE O zéro avec une barre oblique. Ne vous 
trompez surtout pas en frappant O ou 8 ! 





On peut, maintenant expérimenter la multiplication et la division, mais il nous 
faut noter deux points importants. 





MULTIPLICATION ( *) 


Le symbole de la multiplication n’est pas le 
signe habituel X que l’on confond trop 
facilement avec la lettre x, mais l’astérisque 
(*). Le symbole de la division est la barre 
oblique (/). 


DIVISON (/) 


Voici ce que donnerait une opération compliquée : 


Multiplié par … 


? 2345*x67/5 
381423 










. Et divisé 
par 





Expérimentons maintenant une opération donnant à la fois un résultat négatif et 
une valeur décimale : 













Le signe «moins» a La réponse est : — 49,2857143, 


bien été placé 


Notez la précision de la réponse, fournie avec 7 décimales. Nous devons aussi atti- 
rer votre attention sur le fait que le Basic, d’origine américaine, utilise un point 


POINT DECIMAL décimal au lieu de notre virgule habituelle. 


VIRGULE DECIMALE 


N'oubliez jamais que le point décimal 
remplace la virgule décimale. Nous écrirons 
désormais tous nos nombres décimaux avec 
un point. 





L'ORDINATEUR EN « MODE DIRECT » 37 





ELEVATION A 


PUISSANCE 





RACINE CARREE 





VIRGULE DANS 


UN PRINT 








Maintenant que vous connaissez les règles, vous pouvez expérimenter toutes sortes 
d’opérations compliquées. Ne vous en privez pas. Vous apprécierez ce mode direct 
« calculette » qui, en fait, se révèle d’une puissance remarquable. Vous pourrez 
aussi introduire des parenthèses à volonté dans vos expressions. 


Puisque nous sommes en pleine arithmétique, on va vous indiquer aussi comment 


élever un nombre à une puissance, et par exemple, calculer 32. 


Le symbole de l’élévation à une puissance 
est une flèche verticale, dont vous trouverez 
la tête sur la touche du 6. Vous l’obtiendrez 
donc avec SHIFT,. 


A l'inverse, l’extraction d’une racine carrée s’écrit SQR. Ainsi : 


«Racine carrée de …» 






Placez obligatoirement 
la valeur (entre 
parenthèses) 









Si vous disposez d’un Oric — 1, exercez-Vous sur diverses opérations ! 


3. Point-virgule et virgule 


On a déjà employé le point-virgule ; recommençons avec les dix premiers chiffres : 






Chaque chiffre est reproduit, séparé par un 
espace du précédent 





Recommencez l’expérience, maintenant, en plaçant une virgule et non un point- 
virgule ; cela donnera : 





4 espaces entre 
deux chiffres 


38 


EFFACEMENT 
DE L'ECRAN 









CTRL/J 







PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Les chiffres ont été espacés de 4 espaces (« blancs »), même lorsqu’il y a eu retour à 
la ligne. 


La virgule provoquera systématiquement 
l’introduction de 4 espaces, quelle que soit 
la longueur du nombre affiché ou du 
message, Car on peut séparer par des virgules 
des messages alphabétiques encadrés par 

des guillemets. 


Votre écran est peut-être bien rempli, maintenant, Il a même probablement com- 
mencé à se « dérouler ». Voulez-vous l’effacer totalement ? Frappez CTRL/L : 
maintenez CTRL enfoncée et tapez L. Tout s’efface, le curseur se positionnant en 
haut et à gauche : 


Après CTRL/L 





Il n’est pas nécessaire, ici, de faire RETURN. Puisque nous avons expédié le cur- 
seur à l’angle supérieur de l’écran, profitons-en pour expérimenter les touches de 
déplacement du curseur, ces 4 touches marquées des flèches  ? — et <— de part et 
d’autre de la barre d’espacement. On verra leur utilité ensuite (pour dessiner, par 
exemple). Notez que quatre combinaisons, avec CTRL ont le même effet (vérifiez- 
le sur votre Oric) : 


e CTRL/H déplace le curseur d’un pas vers la gauche ; 


e CTRL/I en fait autant, mais vers la droite ; 


e CTRL/J 


va vers le bas ; 


e CTRL/K va vers le haut. 





Nous ne vous l’indiquons que pour mémoire : les touches fléchées sont plus prati- 
ques à l’usage. Il en irait d’ailleurs de même avec RETURN, qui peut être remplacé 
par CTRL/M : pourquoi faire simple quand on peut faire compliqué ? 


4. Variables et constantes 


Lorsqu’on jongle avec des chiffres ou des lettres, il est parfois très agréable de leur 
décerner un nom. Si par exemple, nous pensons à 1984, nous pourrions appeler cela 
tout simplement ANNEE. Prévenons ia machine que, désormais, ANNEE va cor- 
respondre à 1984. Frappez simplement : 


Ready 
ANNEE=1984 


Ready 











CHAINES DE 
CARACTERES 


SYMBOLE $ 


L'ORDINATEUR EN « MODE DIRECT » 39 


Maintenant, vous pouvez demander à l’ordinateur de quelle année il s’agit en fai- 
sant PRINT ANNEE, ce qui donne : 


? ANNEE 
1984 


Dans un ordre complet, on pourrait même écrire en utilisant notre fameux point- 
virgule, pour placer ANNEE à la suite : 







Placez ici un 


? "PARIS, LE 14 JUILLE " ; ANNEE 
PARIS, LE 14 JUILLET 1984 
Ready 


La machine a remplacé 
ANNEE par sa valeur 






L’en-tête complète « Paris, le 14 juillet 1984 » peut, elle aussi, se voir remplacer 
par un nom ; appelons-le DATE. 


Il faut indiquer au Basic que DATE contient 
non seulement une suite de chiffres, mais 
aussi des lettres et même des symboles 
divers. C’est ce qu’on appelle une « chaîne 
de caractères » ; on la placera d’ailleurs 
entre guillemets. Pour cela, on va faire suivre 
son nom du symbole « dollars » ($). 


Le symbole $ précise qu’il s’agit d’une chaîne de caractères, une série de caractères 
absolument quelconques et mélangés. On écrira donc DATES, sans espace. Voici 
ce que cela donnerait : 






On affecte au nom DATES son 
équivalent... 












Read 

DATES="PARIS, LE 14-7-1984" 

Ready 

? DATES 

FRRESNRS Puis on demande 
Ready à l'ordinateur d‘écrire 


DATES, ce qu'il fait J_ _ 
aussitôt 


Cette procédure est importante à bien comprendre : à un rom, on fait correspon- 
dre un nombre ou une chaîne de caractères (mais dans ce cas, le nom est immédiate- 
ment suivi du symbole dollars et la chaîne est placée « entre guillemets »). Recom- 
mençons, simplement avec des chiffres : 


40 









CONSTANTE 
VARIABLE 


CONSTANTE 
NUMERIQUE 


CONSTANTE CHAINE 
VARIABLE NUMERIQUE 


VARIABLE CHAINE 













AFFECTATION 


SYMBOLE 
D'AFFECTATION(=) 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








| 
Il 

"| 
| 

| 

| 
© 
© 
à 
Q 
Le] 
CO) 
Q- 
2 

| 

| 

| 

| 

| 

| 

| 

| 

| 

| 

| 

| 










N 

Ready 

? N 

3 Puis on demande N : c'est 
bien 3 

Ready 

2? X 

@ 

R e a d ÿ ee D nn CE 


Là on demande X, mais comme on ne 
lui a attribué aucune valeur au préalable, 
l'ordinateur décrète qu'il vaut zéro! 


SR Et 






Sans affectation préalable, la valeur d’un nombre est zéro. 


En informatique, le « nom » est appelé une 
« variable » et ce qui lui correspond est une 
« constante ». 


Ainsi, N est une variable numérique et 3, une constante numérique. On peut passer 
à une variable chaîne en ajoutant le suffixe $ à N ; dans l’exemple suivant, la cons- 
tante chaîne est BONJOUR : 


Notez que N$ est un nom différent de N 
tout court, pour le Basic. N vaut toujours 3, 
comme on l’a défini ci-dessus. 


Il nous faut maintenant insister sur ce qu’on a appelé l’affectation, l'attribution 
d’une constante à une variable. 


L’affectation est faite à l’aide du symbole 
égal (=). Mais attention : il ne s’agit plus du 
tout du symbole mathémathique « égal » 

et sa signification est ici tout à fait 
différente. 


On a adopté ce symbole = car il a le mérite d’exister sur tous les claviers. Créer un 
nouveau symbole aurait posé des problèmes de clavier. Voici quelques exercices qui 
vont vous faire comprendre ce que signifie l’affectation (nous avons seulement sup- 
primer les Ready entre les différents ordres que vous frappez et/ou les réponses de 
la machine) : 


L'ORDINATEUR EN « MODE DIRECT » 41 









On attribue d’abord 3 à M, 
puis on demande Ja 
valeur de M 















Maintenant, c'est 5 


qu'on attribue à la même variable 
{« variable» est donc un nom bien trouvé 1) 


Une variable, c’est un nom, immuable : vous pouvez lui attribuer des valeurs suc- 
cessives mais attention : à un instant donné, /a variable ne peut se voir affecter 
qu'une seule constante. Si vous lui affectez une nouvelle constante, la précédente 
est perdue ; on peut dessiner ainsi ce phénomène, en assimilant une variable à un 
tiroir, qui peut contenir des constantes successives : 


Ordre : 





A la trappe 


Le nom M, représenté comme une boîte, correspond très exactement à une cellule 
(ou un groupe de cellules) de la mémoire centrale, qui ne peut contenir qu’une seule 
valeur à un moment donné. C’est pourquoi une nouvelle valeur chasse l’ancienne. 
Appliquons ce principe à quelque chose d’un peu plus fort, sachant que l’ancienne 
valeur de M est 5 : 


M=M+ 2 










Ca, c'est plutôt 


? M bizarre: lisez la suite 


42 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





NOMS DE VARIABLES 





MOTS RESERVES 


CHAINES DE 


CARACTERES 





CHAINE VIDE 


Rappelez-vous : le signe = n’est plus une 
égalité mathématique, mais un symbole 
d'affectation. 


Interprétez la première ligne ci-dessus par « M se voit affecter l’ancienne valeur de 
M, plus 2 ». Ce qui fait bien 7. 

Quels noms pouvez-vous attribuer à vos variables ? Toutes sortes de noms, mais 
attention : 


Votre Basic ne retiendra que les deux 
premiers caractères du nom attribué à la 
variable. 


Ainsi, pour lui, AN et ANNEE sont le même nom, puisqu'il n’aura retenu que les 
deux premières lettres de ANNEE. Par conséquent, usez des noms dépassant deux 
caractères avec modération et rigueur ; dans ce cas, choisissez des noms expressifs, 
évocateurs : AGE pour l’âge, par exemple, et non XYZ. 


Le nom de variable doit obligatoirement 
commencer par une lettre de l'alphabet, mais 
peut comprendre ensuite des chiffres. 


Ainsi, MI est autorisé, mais pas 1M . Nous vous conseillons d’ailleurs, très généra- 
lement : 


e D'’utiliser une unique lettre de l’alphabet comme nom de variable. 
e Ou alors, deux lettres. 
e Ou encore, une lettre et un chiffre. 


Vous ajouterez au bout le symbole $ s’il s’agit d’une chaîne de caractères (nous 
allons y revenir). 

Vous n’en êtes cependant encore pas quitte avec ces noms. En effet, toute une liste 
de mots est frappée d’interdit : 


e D'abord, tous les mots que le Basic utilise pour ses propres besoins. Par exemple, 
PRINT ne peut pas servir comme nom pour une variable. La liste complète de ces 
mots interdits dont le Basic se réserve l’usage et qu’on appelle, pour cela, mots 
réservés, est donnée en fin d’ouvrage (c’est la liste des ordres Basic). 


e Ensuite, des mots incluants ces mots réservés. Par exemple, ON est un mot 
réservé ; donc, vous ne pouvez pas employer ON, non plus que DON, ou MAI- 
SON, ou SONGE... 

Si vous tentiez de le faire, le Basic refuserait votre ordre en affichant un 
« ?2SYNTAX ERROR ». Ne vous entêtez pas (il est plus têtu que vous !), changez 
de nom ! Notez aussi que tous les noms de variables doivent s’écrire en majuscules. 


5. Chaînes de caractères 


Revenons aux chaînes de caractères, qu’on a définies comme étant une suite de 
caractères alphanumériques, symboles, espaces, etc. Voici quelques chaînes de 
caractères : « Belle Marquise, vos beaux yeux me font d’amour mourir ! », ou 
« Paris, le 14 juillet 1789 » ; ou bien « Ah ? » ; un espace peut constituer une 
chaîne : “ ”,et on peut même ne rien mettre dedans : ce sera une chaîne vide, qui 
s’écrit "” 


L'ORDINATEUR EN « MODE DIRECT » 43 





CONCATENATION 
DE CHAINES 


SYMBOLE + DE 
CONCATENATION 





SONORISATION 
DES TOUCHES 


CTRL/F 





Un nombre pur devient une chaîne dès lors que vous le mettez entre guillemets ; 
ainsi, 1789 est une constante numérique mais pour le Basic, « 1789 » avec des guil- 
lemets devient une constante chaîne de caractères. Son nom de variable devra être 
suivi du symbole $. 

Utilisons maintenant 3 chaînes ; observez ce qui va se produire. On a volontaire- 
ment écrit des chaînes en majuscules et minuscules ; exercez-vous à taper ces deux 
sortes de caractères. 


Rappelez-vous : à la mise sous tension, 
l’Oric ne fournit que des majuscules. Pour 
passer au mode « machine à écrire » avec 
majuscules et minuscules, faites CTRL/T. 


Vous aurez directement les minuscules ; les 
majuscules seront obtenues avec SHIFT 
maintenue enfoncée. Pour revenir au mode 
« tout en majuscules », refaites CTRL/T. 


Attention, tous les ordres Basic et les noms 
de variables doivent être écrits en majuscules. 












Exercez-vous donc à utiliser 
aussi les minuscules ! 


A$="Bonjour" 

B$=" ” 
C$="Madame" 
? A$+B$+CS$ 





Cette chaîne ne comporte 
qu'un unique espace 


Bonjour Madame 


La dernière ligne peut surprendre : on a mit bout à bout les trois chaînes, ce qu’on 
appelle « concaténer ». 


Le symbole + n’est plus, ici, le symbole 
de l’addition mais celui de la concaténation. 


Donc, A$ + B$ + CS signifie tout simplement concaténer les trois chaînes. 
Généralisons, maintenant, l’ordre d’affectation. C’est le Suivant : 











Le symbole 
d'affectation 
Sn 










L'attribution 





Le nom à gauche 
du symbole = 


Nom de variable = Constante 


Avant de terminer ce chapitre, ajoutons encore quelques petites choses, relatives au 
clavier. Chaque frappe est sonorisée, ce que l’auteur apprécie (on « entend » qu’on 
a frappé un caractère). Si, toutefois, vous vouliez supprimer ce son, faites 
CTRL/F : les frappes ne seront plus sonorisées. Pour revenir à l’état antérieur, 
refrappez CTRL/F. 


44 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








EFFACEMENT 
D'UNE LIGNE A propos de CTRL, sachez aussi que CTRL/N efface une ligne sur l’écran, celle 
qui est marquée par le curseur. Vérifiez-le, en emmenant le curseur sur des lignes 


existantes, puis en faisant CTRL/N. On usera très modérément de cet ordre. 
CTRL/N 


QUESTIONS SUR LE CHAPITRE III 





C’est facile ; cochez la bonne réponse ! 


1. L’ordre PRINT signifie : 
Afficher sur l’écran 
[1 Exécuter une opération 














| Que répondra la machine aux ordres suivants : 
. PRINT ”’3 +2” 

Ü 3+2 

Ü 5 


. PRINT 3 +2 
[l 3+2 
5 








. PRINT 73 +2 


7] ?SYNTAX ERROR 


7] 3+2 





.23+2 
[J] ?SYNTAX ERROR 
CO 5 


. 2? 19+10 
[1 29 
118 





LTIX3 
CO] 21 
[170 





.2373 
2SYNTAX ERROR 
27 




















9.9 79/3=?; 4+2 
Ü 3=4+2 
[ 9/3=6 











Bon. Et maintenant : 
19. À quoi sert la virgule dans un ordre PRINT. 
[ A séparer des constantes 
[1 A introduire 4 espaces dans leur affichage 














. A$ est un nom de variable : 
Numérique 
C[] Chaîne 

















12. A-t-on le droit d’écrire successivement. 
T=3 
T=3%x2 
T=T/6 


Et que donnera l’ordre d’afficher T ? 





Réponses page 30 


CHAPITRE IV 


LE MODE PROGRAMMÉ 


Le chapitre précédent ne constituait qu’une petite mise en condition : on va, main- 
tenant, passer à la création de programmes réels. Pour cela, on va rédiger des listes 
d'instructions qui ne seront, cette fois, exécutées en salve que sur un ordre donné, 
et non plus une par une, au fur et à mesure de leur frappe. Ce mode s'appelle le 
« mode programmé », par opposition au « mode direct ». 


Principaux thèmes étudiés 


Numérotation des lignes CTRL/C 

RUN Branchement inconditionnel 
Adjonction d’une ligne Effacement programmé de l’écran 
LIST . CLS 

Mode programmé Pour sauter une ligne 
Remplacement d’une ligne CONT 

Suppression d’une ligne Code ASCII 


Messages d’erreur CHRS 

Effacement de la mémoire Listage partiel 

NEW Modification d’une ligne 
Programme de conversion CTRL/A 

INPUT Temporisation 

GOTO WAIT 

Organigramme EDIT 

REDO FROM START 





1. Numérotation des lignes 


Dans ce mode direct étudié dans le chapitre précédent, un ordre frappé au clavier 
était immédiatement exécuté, dès la frappe sur la touche RETURN. Or, un pro- 
NUMEROTATION gramme informatique peut se composer de plusieurs ordres successifs (jusqu’à des 

DES LIGNES milliers...) : par conséquent, il faut pouvoir les ranger en mémoire sans les exécuter 
au fur et à mesure ; on passera à cette exécution au seul moment opportun. C’est 
un tel mode qu’on appelle le mode programmé, ou encore le mode programme. 
Première expérience, frappez : 


de Au RETURN, que se) __ __ 
passe-t-il ?... 




















Mettez ici 
le numéro 10 


. I n’y a plus recopie, exécution : le 
curseur revient en début de ligne 





La machine n’a pas exécuté le PRINT « Bonjour » et le curseur est revenu à la 
ligne, attendant une nouvelle instruction. 


46 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





Le seul fait de faire précéder l’instruction 
par un numéro d’ordre fait entrer la machine 
en « mode programmé ». 


Le numéro d’ordre, ou numéro de ligne d’instruction, peut être quelconque. Met- 
tez 1, ou 2, ou 3, ou 78, ou 357,... peu importe : l’essentiel, c’est la présence d’un 
numéro. 


Qu'est devenue l’instruction numérotée 19, alors ? Elle a été rangée en mémoire 


par le Basic, dès la frappe de RETURN. En voulez-vous la preuve ? On va lancer 
son exécution : pour cela, il faut utiliser le mot magique RUN (quelque chose 
comme : Marche !). Essayez tout d’abord de frapper ces trois lettres, suivies d’un 


RETURN : 










La machine a éxécuté 
le programme (d’une seule ligne) 
se trouvant en mémoire 


Frappez cet ordre sans 
numéro (donc, en 
mode direct, lui) 











Vous pouvez désormais relancer ce programme autant de fois que vous le voudrez, 
sans refrapper l'instruction, simplement avec RUN. Vérifiez-le : vous obtiendrez à 
chaque fois le même résultat. Cette ligne 19 constitue un programme minimal : pas- 
sons à un programme de longueur double. Frappez maintenant une nouvelle ligne 
19, terminée par un point-virgule, puis la ligne 29 suivante, et faites RUN : 













Respectez N'oubliez pas ce 
les numéros : point-virgule pour 
dix, puis afficher à la suite 








vingt. Vous 
allez 

comprendre 
pourquoi 





9 ? "BONJOUR; 
0 ? 






"MADAME " 












Catastrophe : on 
a oublié l’espace ! 






L'ordre RUN — donné en mode direct, lui, remarquons-le à nouveau — provoque 
l’affichage de BONJOURMADAME car on a oublié un espace. Qu’à cela ne 
ADJONCTION tienne ; créons-en un et pour cela, imaginons une instruction, de numéro 15, qui 
D'UNE LIGNE devrait s’intercaler entre 19 et 29. Quel que soit la ligne au début de laquelle votre 
curseur se trouve, frappez : 






Cette chaîne ne contient 
qu’un espace 








15 ? 


BONJOUR , MADAME 


N'oubliez pas le 
point-virgule 








L'espace s’est bien placé entre BONJOUR 
et MADAME. Comment cela se fait-il ? 






LIST 


MODE PROGRAMME 













C'est un nom de 
variable numérique 
interdit 


LE MODE PROGRAMMÉ 47 


Avez-vous bien saisi, maintenant, le rôle du 
point-virgule dans un ordre PRINT ? Il 
supprime le retour à la ligne ; l’affichage 
suivant se fera alors sur la même ligne. 


Pour comprendre ce qui s’est passé avec les lignes du programme, demandez au 
Basic de vous fournir le listage complet du programme qu’il a actuellement en 
mémoire, donc des trois lignes d’instructions que vous avez frappées. 


Demandez le listage se dit LIST. Frappez 
ces quatre lettres, puis faites RETURN. 
C’est donc un ordre en mode direct. 


Voici ce que cela donnera : 





— — N ‘oubliez pas RETURN, 
ici 





"BONJOUR" ; 
* MADAME " 


Remarquez que le Basic a remplacé les points d’interrogation par le mot qu’ils 
représentent, PRINT. Il vous affiche vos trois lignes et a introduit la ligne 15 entre 
la 19 et la 20. 


Vous comprenez, maintenant, pourquoi on 

a numéroté les lignes 19, puis 28 (on aurait 
continué par 39, puis 49, etc.) ? Lorsqu’on 
programme, on risque toujours d’oublier une 
instruction : elle sera facile à introduire si 
l’on s’est réservé des places dans la 
numérotation. 


Tenez compte d’un autre phénomène important : le Basic ne s’intéresse qu’à 
l’ordre croissant des numéros, et non à leur valeur « absolue ». Il rangera les ins- 
tructions en mémoire selon leur ordre croissant et les exécutera dans le même ordre, 
quel que soit le « pas ». Ainsi, au lieu d’écrire 15 pour l’instruction manquante, on 
aurait pu mettre 11, ou 12, ou 13, ou 14, ou... 19 : elle se serait placée entre 19 et 29 
de la même façon. 


Prenez donc, vous aussi, l’habitude de 
numéroter les instructions par « pas » de 18. 


Accessoirement, remarquez autre chose. On vient de voir que le fait de commencer 
une ligne par un numéro provoque le passage en mode programmé ; or, rappelez- 
vous ce qu’on a dit dans le chapitre precédent, à propos des noms de variables : ils 
ne doivent pas commencer par un chiffre. Dans ce cas, en effet, le Basic imaginerait 
que vous avez voulu numéroter une l'gne. Si vous écriviez : 


48 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


puis faisiez RETURN, le Basic penserait qu’il s’agit de la ligne 5 avec l’affectation 
R = 8. Il introduirait donc cette ligne, comme le prouve le listage : 











Le nom (interdit) de variable 





LIST 5 R a été interprêté comme 
5 R=8 la ligne 5, avec la variable 
19 PRINT "BONJOUR"; R 

15 PRINT * ‘; ar 7 

29 PRINT "MADAME" 


Laissons cette ligne 5, pour l'instant, car elle n’interviendra pas dans l’exécution du 
programme (qui ne demande pas l’affichage de R). 


2. Les corrections 


Supposons qu’au lieu d’écrire Bonjour Madame, on veuille mettre Bonjour Mon- 


sieur : il faut modifier la ligne 20, en créer une autre plus exactement. Frappez-là 
REMPLACEMENT ainsi : 


D'UNE LIGNE 





29 ? "MONSIEUR" 


"BONJOUR" ; 
“MONS I EUR" 


La nouvelle ligne 29 a pris la place de l’ancienne, qui est perdue. 


Pour remplacer une ligne d’instruction par 
une autre, il suffit de frapper la nouvelle 
instruction avec le même numéro de ligne. 


En poussant ce principe à son extrême, on peut se demander ce qui se passerait si 
l’on frappait un numéro de ligne existant, puis rien après, sauf le RETURN ? Et 
SUPPRESSION bien, la nouvelle ligne vide prendrait la place de l’ancienne, l’effacerait. Vérifions- 
D'UNE LIGNE le avec la ligne 5, inutile : 










* BONJOUR" ; 
"MONS | EUR" 





L'ancienne ligne 
5 a bel et bien 
été supprimée 

Rd 


LE MODE PROGRAMMÉ 49 











MESSAGES D'ERREUR 





EFFACEMENT 
DE LA MEMOIRE 





Demandez maintenant 
le listage 
du programme … 





Pour supprimer une ligne de programme, il 
suffit de frapper son numéro puis de faire 
RETURN. 


Rappelez-vous aussi que, pour supprimer une ligne en cours de frappe, donc avant 
d’avoir fait RETURN, on peut frapper CTRL/X qui l’annule. Ou alors, faire des 
DEL successifs. 


CTRL/X place une barre oblique inversée à la 
fin de la ligne en cours, l’annule, et ramène 
le curseur au début de la ligne précédente. 


Enfin, notez encore un point important, afin de ne pas être surpris par la suite. Si 
vous frappez une instruction comportant une erreur, le Basic pourra : 


e Soit la détecter aussitôt, dès la validation par RETURN et vous le signaler en 
refusant l’ordre (par exemple, en affichant « ?SYNTAX ERROR »). 


e Soit ne pas la détecter au RETURN, donc l’accepter, mais s’apercevoir de 
l’erreur au RUN. Dans ce cas, il vous affichera l’un de ces nombreux messages 
d’erreur dont il a le secret. 


Si, donc, après un RUN l'ordinateur vous indique une erreur (en précisant son 
numéro de ligne), vérifiez attentivement la ligne indiquée pour la découvrir. Même 
si cette erreur ne vous saute pas immédiatement aux yeux, restez persuadé que c’est 
le Basic qui a raison et qu’il y en a bien une. A ce propos, méfiez-vous des noms de 
variables comportant un mot réservé : ce n’est pas toujours évident. 


3. Effacements de la mémoire et de l’écran 


On a déjà introduit plusieurs ordres en mémoire ; comment les effacer en bloc, tou- 
tes les lignes d’un coup ? Une méthode radicale consiste à arrêter un instant 
l’Oric— 1, puis à le remettre en service ; ses mémoires vives étant vo/atiles, elles 
vont perdre toutes leurs informations. 

Une méthode plus élégante consiste à signifier à l’ordinateur qu’on veut libérer les 
mémoires pour créer un nouveau programme. C’est l’ordre NEW, pour nouveau ; 
« entrez-le » en mode direct (le mot entrer fait partie du jargon de l’informatique ; 
il signifie : frapper au clavier puis valider avec RETURN). Si, aussitôt après, vous 
demandez un LIST, vous n’obtiendrez plus rien : 














Ready 
NEW Ordre pour effacer 
la mémoire 
Ready 
LIST 
Ready … Mais il a été effacé : le Basic 






n'affiche donc plus rien ! 


Les valeurs que vous aviez tapées ou que le programme avait calculées ont disparu 
aussi, mais l’écran reste bien rempli ; profitons-en pour l’effacer. Vous souvenez- 
vous comment ? Oui, bravo : avec CTRL/L. Maintenez CTRL enfoncée et frappez 
L : tout s’efface et le curseur revient à l’angle supérieur gauche. 


4. Quelle est la vitesse du bateau ? 


On va profiter de ce bel écran pour rédiger un programme de caractère utilitaire : à 


50 





PROGRAMME DE 


CONVERSION 





INPUT 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





quoi correspond, en kilomètres par heure, la vitesse d’un bateau donnée en 
nœuds ? Dire qu’un bateau « file 15 nœuds » signifie qu’il se déplace à la vitesse de 
15 milles marins à l’heure, un mille marin valant 1 852 mètres (toutes choses que 
vous saviez). Le programme suivant va convertir les nœuds en kilomètres-heure ; il 
consiste à multiplier par 1,852 la vitesse en nœuds. 


Rappelez-vous qu’en Basic, la virgule 
décimale est remplacée par un point décimal 
et que le symbole de la multiplication est 
l’astérisque (*). 


Entrez en machine le programme suivant, où N est le nom de variable de la vitesse, 
en nœuds, et KM le nom de variable de la vitesse en km/h : 








Formule de 
calcul de la vitesse 






Laissez ici 
un espace 









19 N=15 
20 KM=N*x1.852 
30 ? "La vitesse est de 












En frappant ce programme, rappelez-vous que le texte des messages entre guille- 
mets peut être en minuscules, mais jamais les noms des variables ni d’ailleurs les 
ordres, tels que RUN, ou LIST, obligatoirement en majuscules. 


A la ligne 19, on attribue la constante 15 à la variable N (nœuds) ; en 29, on calcule 
la vitesse en kilomètres-heure, mais on n’affiche toujours rien. Ce n’est qu’en 3ÿ 
qu’on commande l’affichage PRINT (avec ?) d’une formule complexe : tout ce qui 
est placé « entre guillemets » va être reproduit tel, mais au centre, KM sera rem- 
placé par sa valeur. 


Lancez ce programme avec RUN et vous obtiendrez en-dessous : 


RUN 
La vitesse est de 27.78 km/h 


En effet, 15 nœuds correspondent bien à 27,78 km/h, puisque c’est l’ordinateur 
qui le dit. Essayez d’autres vitesses en nœuds, en refrappant la ligne 19 et en met- 
tant d’autres valeurs à la place de 15. Puis, quand vous en aurez assez de refrapper 
cette ligne, nous vous montrerons une façon plus intéressante de procéder. 


5. L'ordre d’entrée INPUT 


Cette fois, on va confier au programme le soin de vous interroger sur la vitesse en 
nœuds choisie. Pour cela, on remplace la ligne 19 par une nouvelle ligne compor- 
tant un ordre de « demande d’entrée d’une nouvelle donnée », ce qui se dit INPUT 
(entrez) en Basic. 

Vous vous souvenez que, pour remplacer une ligne, il suffit de refrapper la nouvelle 
avec le même numéro. Faites donc, en frappant les cinq lettres de INPUT : 






19 INPUT N 


En majuscules, ne 
l’oubliez pas ! 






LE MODE PROGRAMMÉ si 





Vérifiez, avec LIST, que la substitution s’est bien faite : 


LIST Tout va 
p N bien 
1 


"La vitesse est de “"; KM; "km/h 










Parce que le Basic écrit le mot PRINT en 
toutes lettres dans le listage, il provoque un malencontreux 


retour à la ligne. Tant pis : il faut s’y faire. 
SE 


Effacez donc à nouveau l’écran avec CTRL/L, puis lancez un RUN et observez ce 
qui s’affiche : un simple point d’interrogation au début de la ligne ! Cela donne : 









Le curseur est ici 










La machine a posé ce 
point d'interrogation 





En effet, lorsque le Basic rencontre un ordre INPUT (ce qu’il vient de faire), il affi- 
che un ? et stoppe toute activité, attendant que vous frappiez une donnée au clavier 
que vous validerez avec un RETURN. Dès lors, il poursuit l’exécution du pro- 
gramme. 


Attention : ne confondez pas le ? affiché 
par le Basic qui vient de rencontrer un 
INPUT avec le ? que vous placez pour 
remplacer PRINT. C’est bien le même 
symbole, mais pour deux choses différentes. 


En réponse à la demande du programme, frappez par exemple 9, pour voir, puis 
faites RETURN ; l’affichage complet sur l’écran sera : 









Vous avez frappé ce 9, 
puis fait RETURN 






RUN 
? 9 
La vitesse est de 16.668 km/h 





Vous pouvez frapper à nouveau sur RUN et introduire d’autres valeurs, l’essentiel 
étant que vous compreniez parfaitement le fonctionnement de INPUT. 


6. Et si l’on recommençait ? 


Si vous aviez de multiples conversions à exécuter, les frappes successives de RUN 
pour relancer le programme seraient fastidieuses. Dans ce cas, il est plus simple 
d’ajouter une nouvelle instruction, à la fin de ce programme, qui lui ordonne de 
recommencer en renvoyant à son début. 


52 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








GOTO 


ORGANIGRAMME 





On appelle cela 


une «boucle» 
ue 


Cette nouvelle instruction portera le numéro 4ÿ. Elle ordonnera au programme 
d’aller sans discussion à l’instruction 19, donc de revenir à son début. Aller à se dit 
go to, en anglais ; et s’écrit en un seul mot GOTO. Entrez : 


49 GOTO 19 








19 INPUT N 
29 KM=Nx1.852 
39 PRINT "La vitesse est de “;KM;" km/h 


49 GOTO 16 


On peut représenter ce programme par un petit dessin qu’on appelle un organi- 


gramme. Le voici : 
Combien de nœuds 
voulez-vous ? 







Ligne 10 
Affichage du résultat dans son 
message Ligne 30 






Organigramme du 
programme de conversion 


Au passage, notez que l’organigramme répond à quelques règles de dessin qui veu- 
lent que les ordres d’entrée (INPUT) ou de « sortie » vers l’écran (PRINT) soient 
inscrits dans des parallélogrammes, alors que les ordres d’exécution « internes » à 
la machine figurent dans des rectangles. 

Toujours est-il que cet organigramme montre bien que, de la fin du programme, on 
repart à son début en une « boucle ». Faites RUN ; la machine va vous interroger 
une première fois : supposons que vous frappiez 9. Elle va afficher le résultat puis 
vous ré-interroger à nouveau : on suppose que vous frappez 11 ; puis ça continue, 
et vous frappez 7... Cela donnera sur l’écran : 





REDO FROM START 






LE MODE PROGRAMMÉ 53 





Elle attend, en effet, 
la frappe d’un nombre 





? 9 

La vitesse est de 16.668 km/h 
? 11 

La vitesse est de 29.372 km/h 
9 7 

La vitesse est de 12.964 km/h 
? 


PR 
La machine ne se lasse pas ——— 


et en redemande … On 
suppose que vous avez fini vos conversions 


En effet, elle obéit aveuglément au programme et ne saura pas que vos calculs sont 
terminés. Si vous frappiez n’importe quoi d’autre que des chiffres, elle serait inter- 
loquée : 












De guerre lasse, vous avez 
frappé ceci 










? Mais j'ai fini ! 
?REDO FROM START 
9 





Traduction (approximative) de la 
réponse de la machine : «Je ne veux pas 
le savoir; recommencez votre entrée !» 





La formule « REDO FROM START » signifie, en effet : « Refaites à partir du 
début votre frappe ». Comment indiquer à cette obstinée que nous en avons ter- 
miné ? Simplement en frappant la combinaison CTRL/C, ce qui donnera, si l’on 
reprend la fin de l’écran précédent : 





= Ici, vous avez frappé 
CTRL/C 






Le machine est. désormais, prête à accepter d’autres ordres, même un nouveau 
RUN pour relancer le même programme. 

En général, lorsqu'on utilise une instruction INPUT, on s’arrange pour qu’un mes- 
sage explicatif précède le point d’interrogation sur l’écran. Vous obtiendrez ce 
résultat en créant une nouvelle ligne, 5 par exemple ; mais il faudra aussi que le 
GOTO de la ligne 4ÿ renvoie en 5 et non plus en 19, ce qui va vous obliger à refrap- 
per ces deux lignes : 


5 ? "Donnez la vitesse en noeuds :" 
49 GOTO 5 


De ce fait, le programme complet, suivi de son lancement, donne : 


54 


BRANCHEMENT 


INCONDITIONNEL 





EFFACEMENT 
PROGRAMME 
DE L'ECRAN 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


5 PRINT "Donnez la vitesse en noeuds: 
19 INPUT N 

20 KM=N*x1.852 

39 PRINT “La vitesse est de “;KM; "km/h 


49 GOTO 5 

RUN 

Donnez la vitesse en noeuds 
? 6.78 


La vitesse est de 12.55656 km/h 
Donnez la vitesse en nœuds: 
? 


(Es jusqu’à un 
CTRL/C 


Faites un CTRL/C pour stopper ce programme. 






Notez encore que l’ordre GOTO commande 
un branchement « inconditionnel », sans 
discussion, à la ligne indiquée. C’est 
pourquoi on l’appelle « branchement 
inconditionnel ». 


7. Effacement programmé de l’écran 


On peut fignoler ce programme en commençant, dès le RUN, par effacer l’écran. 
Oui, mais comment introduire un CTRL/L dans le programme ? C’est parfaite- 
ment possible ; la preuve, on vous montrera comment plus loin. Mais la méthode la 
plus simple consiste à introduire l’ordre d’effacement de l’écran, ce qui se dit en 
anglais « Clear screen » (effacer l'écran) et s’écrit, en abrégé, CLS. Essayez-le 
d’abord en mode direct ; frappez CLS, puis RETURN, et vous obtiendrez le bel 
écran suivant : 





Ayant vérifié que CLS fonctionne, vous pouvez l’introduire maintenant dans le 
programme, par exemple en ligne 3 : 


Dès lors, et avec le RUN, /e programme commence par effacer l'écran ; vous n’y 
trouverez plus que les lignes dont vous avez commandé l’affichage. 

Un dernier défaut subsiste encore : les réponses ne sont pas séparées de nouvelles 
questions ; introduisons un saut de ligne, d’un calcul à l’autre, avec cette ordre 
bizarre à première vue : 


LE MODE PROGRAMMÉ 55 





POUR SAUTER 


UNE LIGNE 








Etc, jusqu'au CTRL/C 


CONT 






Le programme reprend et 
attend une nouvelle valeur 
à convertir 
















35 ? Qu'est-ce-que 
RS ES ES cela signifie ? ] 









Ici, on a frappé un numéro de ligne suivi par un ordre PRINT (? en abrégé), suivi 
lui-même par. rien du tout ! Dans ce cas, le Basic va lire ce PRINT et s’apercevra 
qu’il ne doit rien afficher ; par conséquent, il sautera une ligne. Revoyons le pro- 
gramme complet, d’abord : 








LIST 
3 CLS 
5 PRINT "Donnez la vitesse en noeuds:" 
19 INPUT N 
20 KM=Nx1.852 
30 PRINT "La vitesse est de “;KM;"km/h 
35 PRINT 
49 GOTO 5 Pour sauter une 
ligne avant de 
RUN recommencer 


Avec le RUN puis le RETURN, vous verrez : 


Donnez la vitesse en noeuds: 
? 33 
La vitesse est de 61.116 km/h 


Ici, une ligne 
Donnez la vitesse en noeuds : a été sautée 
7? 


Notez bien le rôle de ce PRINT suivi par 
rien du tout (si ce n’est RETURN) : il sert 
à sauter une ligne. 


Deux PRINT successifs auraient servi à sauter deux lignes, par exemple. 

Pour en terminer avec ce programme, vous faites un CTRL/C mais, pris de 
remords, vous voulez continuer vos conversions : que faire ? Frappez simplement 
CONT, pour continuer, et il reprendra au point exact où vous l’aviez lâché. La 
séquence serait la suivante : 


Donnez la vitesse en noeuds: 
? 5 
La vitesse est de 9.26 km/h 


la vitesse en noeuds: 









Donnez 
? 


Vous avez fait, ici, 
un CTRL/C … 










.… Mais vous vous reprenez et 
voulez continuer : frappez 
ceci 





56 
Um | que caractère se dit « character » en anglais, on comprendra que l’ordre se code 
TE, 


Les parenthèses sont obligatoires : autrement, 
le Basic ne comprendrait pas 


PRATIQUE DE L'ORIC 1 ET 36 PROGRAMMES 





Dès lors, vous pouvez effectivement continuer. 


8. Le code ASCII 


Sachez une chose importante : chaque caractère que vous pouvez frapper au cla- 
vier, qu’il soit simple ou combiné avec SHIFT ou CTRL, dispose d’un code numé- 
rique allant de 9 à 255. 


L'ensemble de ces codes est normalisé (plus ou moins...) et relève des normes 
ASCII, ce qui se prononce Aski et vient de « American Standard Code for Infor- 
mation Interchange ». Les normes strictes ASCII, allant de 32 à 127, sont données 
en fin de ce livre ; aux autres codes correspondent des ordres divers ou des caractè- 
res graphiques sur lesquels on reviendra. 


On peut demander au Basic un caractère quelconque en frappant son code. Sachant 


CHR ; en outre, il doit être suivi du fameux symbole dollars ($) puisqu'il s’agit de 
caractères précisément. On écrira donc PRINT CHR suivi du code du caractère 
voulu. Le T, par exemple, a pour code 84, ce que vous pouvez vérifier dans le 
tableau ASCII ; pour afficher un T, vous pourrez écrire (faites-le en mode direct) : 











er er ne Vous voulez obtenir le caractère 
? CHR$(84) correspondant au code 84 … 
T 


…… La machine vous 


Tentez votre chance avec d’autres valeurs ; par exemple, le / minuscule se code 
116 : il y a toujours une différence de 32 entre majuscules et minuscules. 

Or, l’effacement qui se frappe avec CTRL/L, possède aussi son code : c’est le 12. 
Vous devinez alors que l’on puisse aussi commander l'effacement avec ? 
CHRS(12). Vérifiez-le en mode direct : l’effet sera semblable à celui de CLS, le mot 
« Ready » venant alors toutefois sur la 3° ligne et non sur la seconde : 









Après un 
? CHRS (12) 
en mode direct 






Vous pouvez introduire cet ordre dans notre programme précédent, en 3, à la place 
de CLS : 


= — Pour effacer l'écran 


Relancer le programme : vous n’y verrez guère de différence, et vous n’en verrez 
plus du tout si vous ajoutez un point-virgule au bout de la ligne 3, puisque grâce à 
lui vous supprimez un passage à la ligne ! 


LE MODE PROGRAMMÉ 57 











LISTAGE PARTIEL 







{oi les 4 lignes, 
jusqu'à 20 





(ie le listage, de 30 
à la fin du programme 


SR" Re, 


N'oubliez pas 
le tiret après 
le numéro de ligne, cette fois 


9. L'édition 


Vous l’apprendrez vite à vos dépens, la mise au point d’un programme fonction- 
nant comme on l’espérait impose bien des retouches et des corrections. Nous avons 
déjà passé en revue certaines méthodes, mais il vous faut d’emblée aller encore un 
peu plus loin. 

Vous serez amené à vous servir fréquemment de ces diverses méthodes ; c’est pour- 
quoi nous vous invitons à lire ce passage, à expérimenter ce que nous vous propose- 
rons, puis à y revenir dès lors que le besoin s’en fera sentir. 

Considérons l’ordre LIST. Vous pouvez très bien lister une seule ligne, par exemple 
la ligne 19 du programme précédent (nous supposons qu’il est toujours en 
mémoire) : 













LIST 10 
19 INPUT N 


Vous demandez = —————— — — 
la seule ligne 10 … 


=. Qui apparait 
AUSIOT. , pee En 





Vous pourriez demander le listage du programme jusqu’à la ligne 29 incluse, par 
exemple, ce qui s’écrirait : 


(ioubier pas le tiret 
{signe «moins») 





3 PRINT CHR$(12) 

5 PRINT "Donnez la vitesse en noeuds:" 
19 INPUT N 

20 KM=Nx*1.852 


Ou encore, vous pourriez souhaiter les lignes à partir de 39 incluse : 












LIST 30- 
839 PRINT "La vitesse est de “;KM"km/h 





85 PRINT 
49 GOTO 5 
Ready 


Dernière formule, enfin, le listage à partir de 5, par exemple, jusqu’à 29 inclus ; 
voici : 


58 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 









MODIFICATION 


D'UNE LIGNE 









Vous avez amené le 
curseur, ICI, 


CTRL/A 





LIST 5-29 


5 PRINT "Donnez la vitesse en noeuds: 
19 INPUT N 
20 KM=Nx1.852 


Supposons maintenant que vous vouliez modifier la ligne 4ÿ et écrire à la place 
GOTO 3 (au fait, pouvez-vous deviner quel sera le résultat de cette modification ?). 
Vous pourriez refrapper totalement cette ligne (pourquoi pas ?). Mais il existe une 
méthode souvent préférable permettant d’apporter des modifications à une ligne 
sans avoir à la refrapper. Pour cela, il faut « éditer » cette ligne, ce qui signifie 
dans ce jargon très discutable de l’informatique : l’afficher (ou l’imprimer). C’est 
là où LIST intervient. Notre programme étant court, listez-le en entier. Puis : 


1) — Servez-vous des touches fléchées (autour de la barre d’espacement) pour 
emmener le curseur tout au début de la ligne 49. Voici ce que cela donnera (on ne 
vous montre que cette seule ligne) : 


49 GOTO 5 





2) — Servez-vous, maintenant, de la combinaison CTRL/A pour déplacer le cur- 
seur vers la droite (maintenez CTRL enfoncée et frappez plusieurs fois sur A). 
Avec CTRL/A, le curseur « relit » les caractères qu’il croise et, pour l’ordinateur, 
tout se passe comme si vous les refrappiez. Stoppez le curseur sur le 5. 


3) — Maintenant, frappez votre correction, donc un 3 au lieu du 5. Vous pourriez 
de la même façon effacer des caractères avec DEL ; si d’autres caractères à conser- 
ver suivaient, il vous faudrait les « recopier » en promenant dessus le curseur, tou- 
jours avec CTRL/A. 


Attention : seul CTRL/A relit et « recopie » 
en mémoire les caractères sur lesquels il 
passe. Cela, en mode « édition ». 


4) — Faites RETURN : la nouvelle ligne est enregistrée. 


5) — La correction est terminée, mais il reste encore une précaution à prendre : 
extrayez le curseur du corps du pores emmenez-le au-dessous avec la touche 
marquée d’une flèche verticale (+) car sinon, ce que vous frapperiez à nouveau vien- 
drait se conjuguer avec les lignes existantes, donnant un résultat imprévisible. Ou 
alors, et plus simplement, effacez l’écran avec CTRL/L. 

Vous pouvez maintenant vérifier l’état de la nouvelle ligne 49 modifiée, avec LIST, 
ou simplement LIST 4ÿ ; vous obtiendrez : 


LIST 49 
49 GOTO 3 


Que pensez-vous que cela donnera, avec un RUN ? A chaque nouvelle vitesse en 
nœuds frappée, l’ordinateur calcule la vitesse correspondante en kilomètres-heure, 
l’affiche, puis efface l’écran et repose la même question. Vérifiez-le avec un RUN. 
Hélas ! L’affichage du résultat est instantané et l’écran est effacé tellement vite 
qu’on n’a même pas le temps de le lire ! 


LE MODE PROGRAMMÉ 59 





TEMPORISATION 


WAIT 





EDIT 





Aussi va-t-on prier l’ordinateur de bien vouloir attendre un instant, avant de 
ré-effacer l’écran. Aftendre se dit WAIT, en anglais ; on va faire suivre WAIT 
d’une durée, sachant qu’une durée de 1 équivaut à 19 millièmes de secondes ; par 
conséquent, pour « temporiser » une seconde, on écrira WAIT 199 (car 199 fois 
19 ms = 1 seconde). Introduisez cette instruction en remplacement de la ligne 35, 
qui n’a plus d’intérêt de toute façon : 


Pour mémoire, voici à quoi ressemble maintenant notre programme complet (vous 
l’obtenez, comme de coutume, avec un LIST) : 


LIST 

3 PRINT CHR$(12) 

5 PRINT "Donnez la vitesse en noeuds:" 
19 INPUT N 

29 KM=Nx1.852 

89 PRINT "La vitesse est de ";KM; "km/h 
35 WAIT 100 

49 GOTO 3 


Refaites un RUN : cette fois, l’affichage dure une seconde. Voulez-vous en modi- 
fier la durée ? Vous savez comment le faire sans refrapper la ligne, avec un LIST 
35, les touches fléchées pour amener le curseur au début de la ligne, CTRL/A pour 
l'emmener sur le 1. Frappez alors un 2, par exemple, puis « recopiez » les deux 
zéros en frappant encore sur CTRL/A ; le curseur étant « sorti » du texte, faites 
RETURN, effacez l’écran, et lancez le programme avec RUN. La temporisation 
sera de 2 secondes. 


Voulez-vous la porter à 5 ? Il faut frapper 599, mais on va vous indiquer une der- 
nière méthode. Faites apparaître la ligne 35 en utilisant, cette fois, un ordre qui 
porte bien son nom : EDIT. Ecrivez EDIT 35. Vous constaterez que le curseur reste 
alors sagement au début de la ligne 35 qui apparaît : 


EDIT 35 
85 WAÏIT 209 


Vous pouvez emmener alors le curseur avec CTRL/A sur le 2 afin de le modifier en 
5, tout comme on l’a fait précédemment, refaire CTRL/A pour « sortir » le cur- 
seur, faire RETURN : la modification est terminée et la temporisation a été portée 
à cinq secondes. Vérifiez-le avec un RUN. 


Avec de la pratique, vous apprendrez à combiner ces diverses possibilités (nous ne 
vous en avons d’ailleurs pas tout dit ici), et vous acquerrez les automatismes qui 
vous rendront les modifications et corrections simples. Afin d’acquérir cette indis- 
pensable pratique, nous allons maintenant vous proposer à la fin de chaque chapi- 
tre, des programmes modèles, allant jusqu’aux jeux. N’abordez toutefois ces pro- 
grammes qu'après avoir répondu avec succès aux exercices de la page 60. 


Entrez les programmes dans votre Oric un seul à la fois..., ils pourraient se gêner, 
et essayez-les. Les exemples d’utilisation sont là pour vous guider. Grâce aux 
remarques décortiquez le programme et changez une virgule, remodelez à votre 
guise. 

C’est l’occasion de mettre en pratique les modifications grâce à EDIT et CTRL/A 
dont on vient de vous parler. 


60 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








Vous retrouverez les mots 
INPUT PRINT WAIT GOTO 


et vous consulterez une portion de la table de codification des caractères grâce à la 
fonction CHRS et son complément ASC. 


QUESTIONS SUR LE CHAPITRE IV 


1. Y a-t-il une erreur dans la séquence suivante ? 


2. Pour lancer l’exécution d’un programme, l’ordre est : 
RUN 
GO 














. Un point-virgule placé dans un ordre PRINT : 
Commande un retour à la ligne 
[] Supprime le retour à la ligne 











. Peut-on ré-afficher un programme se trouvant en mémoire ? 
Oui, avec l’ordre LIST 
[] Non, il faut le refrapper 











. Pour supprimer une ligne de programme, il faut : 
C] Frapper son numéro, puis faire RETURN 
Frapper son numéro, puis faire CTRL/X 











. L'ordre NEW sert à : 
Relancer l’exécution d’un programme 
Effacer la mémoire 














. Pour effacer l'écran, il faut faire : 
CLS 

C] CTRL/L 

? CHRS(12) 























8. Si le programme doit demander à l’opérateur de nouvelles données, vous devrez intro- 
duire une instruction : 
ENTER 
C] INPUT 











. Un organigramme est : 
[] La représentation graphique d’un algorithme 
C] Le dessin d’un programme 











. Pour interrompre un programme en cours d’exécution, vous ferez : 
CO] CTRL/C 
C] STOP 


. Pour créer une temporisation de cinq secondes, vous écrirez : 
STOP 5 
WAIT 599 














. L'ordre EDIT 2ÿ 
Supprime la ligne 29 
[] L’affiche sur l’écran pour corrections 




















Réponses page 72 


LE MODE PROGRAMMÉ 61 








CLS 

S-Q 
INPUT P 
S=S+P 
PRINT S 
GOTO 38 





UNE ADDITION QUI N’EN FINIT PAS 


CLS INPUT PRINT GOTO WAIT 





La scène se passe à la sortie d’un magasin : un client qui vient de faire 
ses achats s’aperçoit qu’il a oublié son carnet de chèques et que son porte- 
monnaie risque de ne pas suffire à tout payer. 

La caissière tape alors les prix en faisant afficher au fur et à mesure 
la somme due, jusqu’à ce que le client lui crie « halte ». 


REMARQUES 
10 — on efface l’écran 
20 — on efface l’ardoise du client 


30 à 60 — c’est le serpent qui se mord la queue : 
une boucle 


Le spectacle suivant se déroule devant les yeux du client inquiet : 


Pour arrêter on a 
tapé CTRL C 





62 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Il faut bien avouer qu’on peut faire mieux comme affichage, en étant 
plus bavard : un petit message pour la caissière, un autre pour le client, à 
condition de modifier deux lignes. 


18 CLS 
28 S=0 
40 S=S+P 


5Q PRINT'SOMME DUE ";S 


6Q GOTO 30 


PRIX D'UN ARTICLE? 23 


SOMME DUE 23 

PRIX D’UN ARTICLE? 34 
SOMME DUE 52 

PRIX D'UN ARTICLE? 56 
SOMME DUE 113 

PRIX D'UN ARTICLE? 12 
SOMME DUE 125 

PRIX D'UN ARTICLE®? 


Ready 





Comment savoir à quel article on en est ? Il suffit de les compter et d’af- 
ficher ce numéro. 

Mais l'instruction INPUT ne sait écrire que des messages figés. Il faut 
donc distinguer l’affichage du message destiné à la caissière précisant le 
numéro de l’article et l’introduction du prix : 


ID: ELS 


28 S=0 


25 PRINT"'ARTICLE NO "3N; 


30 INPUT P 25 — affichage du message 


REMARQUES 


48 S=S+P 30 — introduction du prix 
50 PRINT"'SOMME DUE ";S 


99 N=N+] 


6Q GOTO 25 





ARTICLE NO 1 ? 8 
SOMME DUE 8 
ARTICÉE" NO 2,7 4,5 


SOMME: QUE 12:35 
ARTICLE N0O:°3 7.672.535 
SOMME DUE 793,85 
ARTICLE NO 4 ? 122 





LE MODE PROGRAMMÉ 63 





SOMME DUE 291.85 
ARTICLE NO 5 ? 


Ready 





L’écran se remplit vite de phrases et de nombres et si on veut y voir 
clair il vaut mieux ne garder que ce qui concerne l’article en cours. On net- 
toiera l’écran entre deux articles. Mais attention il faut avoir le temps de 
lire la somme avant qu’elle ne s’efface ! L’instruction WAIT réalisera ce délai 
ajustable au réflexe humain : 


5Q PRINT"'SOMME DUE ";S 


55 N=N+1! REMARQUES 
56 WAIT200 56 — attente : 2 secondes 


57 CES 
6@ GOTO 25 


57 — effaçage 





On a maintenant un écran qui contient seulement deux lignes comme 
celles-ci avant de s’effacer : 


ARTICLE NO 3 745.58 
SOMME DUE 893.5 


La numérotation des lignes de ce programme est irrégulière puisqu’il 
a été écrit par retouches successives, ce qui est un cas très réaliste. 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





S=0 
CES 
PRINT S 


S=S+1 
WAIT 95 
GOTO 20 





UN CHRONOMÈTRE DIGITAL 
CLS PRINT WAIT GOTO 





Voici une première forme de programme de chronométrage à la seconde. 
On ne peut guère faire plus simple : c’est une application de l’instruction 
WAIT. 

WAIT 100 provoque une pause d’une seconde, et pourtant nous avons 
dû mettre WAIT 95. Pourquoi ? La portion du programme qui est répétée 
chaque seconde ne contient pas que cette instruction. L’exécution des lignes 
20, 30, 40 et 50 prend au total 5/100 seconde environ. 


REMARQUES 
10 — point de départ 
20 à 60 — boucle répétée chaque seconde 


50 — délai : 95/100 seconde 


Nous ne reproduisons pas d’exemple d’utilisation : les secondes vont 
défiler en haut de l’écran, et vous pourrez vérifier vous-même que le chro- 
nométrage est précis à moins d’une seconde par minute. Nous ferons mieux 
(plus complet et plus précis) au chapitre VII. 


LE MODE PROGRAMMÉ 65 








3 


CARACTÈRES ET CODES : 


LA NORME ASCII 


CLS CHR$ ASC PRINT GOTO WAIT 





18 C=32 
2@ PRINT C;,CHRS$(CC) 


38 C=C+1 
4Q GOTO 28 





PRINT CHR$(12) signifie afficher le caractère dont le code est 12 et 
nous venons de voir que ceci avait pour effet d’effacer l’écran et de remettre 
le curseur en haut à gauche. Ce code 12 correspond à une norme très répan- 
due qui est valable aussi pour les imprimantes et signifie passer à la page 
suivante. Il y a ainsi 256 codes auxquels correspondent 256 caractères ou 
effets spéciaux. Entre 32 et 127 on retrouve à peu près partout les mêmes 
caractères selon la norme de codification ASCII. Ainsi le code de la lettre 
A est 65, pour B c’est 66... 


Vous trouverez en fin d’ouvrage la table pour les codes 32 à 127. Mais 
vous pouvez interroger l’ordinateur pour connaître cette table : 


PRINT CHR$(65) vous donnera A, 


et à l’inverse PRINT ASC(" A‘) affichera 65. 


Affichage d’une partie de la table 


On peut écrire par exemple, le programme de consultation à partir du 
code 32 (en-dessous les effets spéciaux sont très perturbants) : 


REMARQUES 

10 — code du premier caractère 

20 à 40 — boucle 

20 — affichage du code puis du caractère 


30 — code suivant. : 





66 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








Au cours du spectacle, ne soyez pas inquiets pour votre ordinateur ou 
votre téléviseur : tout s’arrange à la fin ! Eh oui, cette boucle qui ne devrait 
jamais s’arrêter se bloque grâce à une erreur : ?Illegal quantity error in 20 : 
on n’a pas le droit de demander le caractère dont le code est 256 (ou plus). 
Ouf ! 


251 
252 
2353 


254 

255 

256 

PILLEGAL QUANTITY ERROR IN 28 
Ready 





Si vous trouvez que la table défile trop vite, ajoutez une temporisation 
à la ligne 35, et pour mieux isoler les différents effets effacez l’écran : 


35 WAIT 30 
36 CLS 


4@ GOTO 28 





Entre les codes 32 et 126 on obtient la liste des caractères normaux dis- 
ponibles sur l’ORIC, en commençant par l’espace. 

Entre 127 et 159, les résultats sont parfois surprenants : certains codes 
ont des effets sur la couleur du fond ou de l’encre, d’autres sur la synchro- 
nisation de l’image ou encore masquent une partie de l’écran. On obtient 
même des hiéroglyphes étranges venus d’ailleurs. Nous aurons l’occasion de 
revenir sur ces codes spéciaux. 


Si on ne connaît pas le code du premier caractère souhaité 


Comment démarrer la consultation à la lettre A, par exemple, si l’on 
ne connaît pas le code de cette lettre ? En le faisant calculer par le programme : 


20 PRINT CHR$(C),C Ici on écrit 
10 — code du premier caractère affiché 


30 C=C+1 d'abord le 


35 WAIT 30 caractère puis son 20 à 40 — boucle 
code 


36 CLS 20 — affichage du caractère puis de son code 
4Q GOTO 20 





Le spectacle change légèrement dans la région 129 à 143 et on observe 
l'effet des caractères spéciaux sur leur propre code. 


LE MODE PROGRAMMÉ 67 





4 


L’'INITIALE D'UN MOT 


LEFT$ LEN 





LEFT$ 


Certaines fonctions du Basic permettent de se livrer à toutes sortes d’opé- 
rations chirurgicales sur les chaînes de caractères. Commençons par l’extrac- 
tion de la partie gauche d’un mot ou d’un groupe de mots grâce à la fonc- 
tion LEFTS (de l’anglais left : gauche). N'oubliez pas le dollar car le résul- 
tat fourni par LEFTS est une chaîne de caractères 


LEFTS$(« NON »,2) vaut « NO » 
et si C$ vaut « PARISIEN », 
LEFT$(C$,5) vaut « PARIS » 
Vous avez compris, le deuxième nombre indique combien de caractères 


on souhaite extraire, et on commence par le plus à gauche. 
Utilisons cette fonction pour connaître l’initiale d’un mot. 


1@ INPUT"TAPER UN MOT"; M$ 
2Q PRINT'L’INITIALE EST ";LEFTSCNM$,1) 


RIGHTS 


LEN 


Un exemple d’utilisation : 


RUN 
TAPER UN MOT? 2INC 
L'INITIALE EST à 


Ready 





Pour l'instant l’ordinateur ne nous apporte rien. Ça deviendrait plus 
intéressant si l’on avait emmagasiné en mémoire un tas de noms et qu’on 
veuille les ressortir par leur initiale. Patience ! 


L’équivalent de LEFT$ pour la partie droite s’appelle RIGHTS (right 
signifie droite en anglais), par exemple : 

RIGHTS (« BONJOUR »,4) vaut « JOUR » c’est-à-dire les 4 derniers 
caractères. 


Si on a besoin de connaître le nombre de caractères d’un mot ou d’un 


groupe de mots, c’est la fonction LEN (du mot anglais Length : longueur) 
qui va vous renseigner : LEN (« OUI ») vaut 3. 


W$="ANTICONSTITUTIONNELLEMENT" 


PRINT LENCWS$) 
25 





68 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 











UN TÊTE A QUEUE VERBAL 
MIDS 





Comment écrire à l’envers : de droite à gauche ? Il suffit de parcourir 
le mot ou la phrase caractère par caractère, en commençant par le dernier. 
L'affichage se terminera faute de caractère, parce que nous n’avons pas encore 
vu comment finir plus joliment ! La fonction à tout faire sur une chaîne de 
caractères s’appelle MIDS$ (de l’anglais middle : milieu) et elle permet d’analy- 
ser un fragment de chaîne situé n’importe où. 


MIDS(’TARABISCOTTE”’,5,3) vaut BIS”? 


parce que B est le cinquième caractère de la chaîne de départ et qu’on a pris 
trois caractères. 


MID$(’TARABISCOTTE”’,5) donne *’BISCOTTE”’ : le nombre de 
caractères à extraire n’est pas précisé si MIDS$ va jusqu’au bout. Pour isoler 
le caractère numéro P d’une chaîne située dans M$, il suffit d’écrire 
MIDS(MS,P,1). 


INPUT'TEXTE À INUERSER";T$ 


C=LENCTS$) 
CLS REMARQUES 
PRINT MID$(T$;C;,1); 20 — on commence par le dernier caractère 


C=C-1 
GOTO 48 





50 — on régresse 


Dans l’exemple suivant : 


TEXTE À INUERSER? ARROSOIR 


RIOSORRA 
PILLEGAL QUANTITY ERROR IN 48 
Ready 





l'exécution se termine sur le message ?ILLEGAL QUANTITY ERROR au 
moment où on cherche à extraire le caractère situé avant le premier (C=0) . 


LE MODE PROGRAMMÉ 69 








UN COMPTE ROND 
STR$ VAL 





Grâce aux fonctions LEFT$, RIGHTS, MIDS et LEN, la manipulation 
des chaînes de caractères est plus commode que celle des nombres. Mais on 
peut l’appliquer aux nombres en utilisant la fonction STR$ qui convertit un 
nombre en chaînes de caractères. Pourquoi pas ?!. 


STR$(1357) vaut *’1357”” et on pourra toujours faire le trajet inverse 
pour retrouve un « vrai » nombre : 


STR$ VAL(”’ —-285’’) donne le nombre — 285 


Par exemple, si on souhaite arrondir un prix donné en francs, à la dizaine 
de francs supérieure, il suffit de changer le chiffre de droite pour un zéro 
VAL et d'augmenter de 1 son voisin (le chiffre des dizaines). 


On peut écrire une première version du programme. 


CLS 

INPUT'NOMBRE À ARRONDIR" ;N 

PRINT SPC(22) ; "CHIFFRES" 

PRINT SPC(13);"DE DROITE DI2AINE UNIT 


N$=STRSCN) 

LELENCNS ) REMARQUES 
U$=RIGHTS$SCNS, 1) 
D$=MID$SCN$,L-1,1) 
N$=LEFT$SCN$S,L-2) 
PRINT"'AU DEPART :" 70 — le chiffre des unités 
PRINT SPCC16) ;N$, ,D$, , US$ RES Te 
R=INTCUALCUS)/5) 
D$=CHRS$CASC(D+)+R) 

PRINT"'RETENUE SUR LES DIZAINES "5R 
PRINT SPCCIG6)J;N$,,D$,,US$ 

U$="2" 190 — reconstruction du nombre complet (toujours 

sous forme de chaîne de caractères) 

PRINT"'REMISE À ZERO DE L’UNITE" 

PRINT SPCCI16);N$,,D$,,US$ 

N$=N$+D$+U$ 

PRINT"'CE QUI DONNE : ";N$ 


20 — introduction du nombre à arrondir 


50 — conversion en chaîne de caractères 


90 — les autres 


120 — la retenue qu’il faut ajouter au chiffre des 
dizaines (0 ou 1) 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Exemple : 


NOMBRE À ARRONDIR? 1234 
CHIFFRES 
DE DROITE DIZAINE UNITE 


AU DEPART 

12 3 4 
RETENUE SUR LES DIZAINES 1! 

12 q 4 
REMISE À ZERO DE L’UNITE 

12 q ) 
CE QUI DONNE : 1240 


Ready 





Si on désire arrondir à la dizaine la plus proche, il faut modifier la ligne 120 : 


18 CLS 

2@ INPUT'"NOMBRE À ARRONDIR'" ;N 
30 PRINT SPC(22) ; "CHIFFRES" 
40 PRINT SPC(13);"DE DROITE DIZAINE UNIT 
E" 

50 N$=STR$CN) 

69 L=LENCNS) 

78 U$=RIGHTS$SCNS, 1) 

80 D$=MID$SCN$;L-1,1) 

30 N$=LEFTS$SCN$,L-2) 

108 PRINT'"AU DEPART :" 

119 PRINT SPCC16);N$, ,D$, , US$ 


12@ R=INTCUALCUS)/5) 


138 D$=CHR$CASCCD$)+R) 





si le chiffre des unités est inférieur à 5 la retenue R vaudra 0 sinon ce sera 1. 


NOMBRE À ARRONDIR? 1234 
CHIFFRES 
DE DROITE DIZAINE UNITE 
AU DEPART 
12 3 4 
RETENUE SUR LES DIZAINES @ 


12 3 4 
REMISE ‘A :2ER0: DE L?UNITE 

12 3 
CE QUI DONNE : 1238 





LE MODE PROGRAMMÉ 71 





NOMBRE À ARRONDIR? 1236 
CHIFFRES 
DE DROITE DIZAINE UNITE 


AU DEPART 

12 3 6 
RETENUE SUR LES DIZAINES 1! 

12 4 6 
REMISE ‘À ZERO DE. L’'UNITE 

12 4 0 
CE QUI DONNE : 1249 


Re ady 





On retrouvera ces manipulations de chaînes de caractères ainsi que les 
instructions INPUT WRITE GOTO dans les chapitres suivants, Mais l’ac- 
cent sera mis sur les instructions nouvelles. 


72 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








REPONSES AUX QUESTIONS SUR LE CHAPITRE IV 


1. Non, il n’y a pas d’erreur, ici. Vous pouvez attribuer aux lignes n’importe quel 
numéro : respectez seulement un ordre croissant. 


2. L’exécution d’un programme est commandée par RUN. L'ordre GO n'existe 
pas, tel, de toute façon (sauf sous des formes telles que GOTO). 


3. Le point-virgule, dans un ordre PRINT, supprime le retour à la ligne. L’affi- 
chage se poursuivra sur la même ligne. 


4. Oui, l’ordre LIST ré-affiche le programme en mémoire. 


5. Pour supprimer une ligne de programme, il faut frapper son numéro puis 
RETURN. Rappelez-vous que CTRL/X sert à abandonner ce qu’on vient de frap- 
per ; la machine n’en tiendra pas compte ; par conséquent, il n’y aurait pas sup- 
pression. 


4. NEW sert à effacer la mémoire (vive, centrale), qui contient le programme, les 
données et les résultats. 


7. Ces trois ordres effacent l’écran : à vous de choisir celui que vous préférez ! 
Rappelez-vous que la frappe de CTRL/L ne peut se faire qu’en mode direct. Par 
contre, CLS et ? CHRS$(12) peuvent intervenir en mode direct ou en mode pro- 
grammé. On préfèrera CLS, tout simplement parce que c’est plus court à frapper et 
plus évident (si vous vous souvenez de sa signification anglaise : « Clear Screen », 
soit « effacer l’écran »). 


8. C’est INPUT qui sert à introduire de nouvelles données en cours de l’exécution 
d’un programme (on a inventé, ici, le mot ENTER pour les besoins de la question). 


9. Ici, on a répété deux fois la même chose, d’abord de façon « savante », puis très 
simplement. En effet, un « algorithme » est la « logique » du programme, la façon 
dont il est organisé pour atteindre le résultat voulu. Et « représentation graphi- 
que » ou « dessin » sont très synonymes. 

19. Pour interrompre un programme, il faut faire CTRL/C. 


11. Vous créerez une temporisation de cinq secondes avec WAIT 599. 


12. L'ordre EDIT 29 affiche la ligne 29 sur l’écran afin que vous puissiez la corri- 
ger. 





CHAPITRE V 


COULEURS ET SONS PROGRAMMÉS 


On va enfin vous présenter la gamme des couleurs de l’Oric— 1. Avec, de plus, les 
sons programmés, au nombre de quatre : une clochette, un tir d’arme galactique à 
laser (eh oui !), un coup de feu et une explosion. Pour les créer, il nous faut vous 
initier aux boucles du type FOR... TO et aux nombres aléatoires. Mais votre peine 
va aussitôt trouver sa récompense, croyez-le. 


Principaux thèmes étudiés 


Boucles 

FOR... TO 

NEXT 

Organigramme de 
boucle FOR... TO 

Instructions multiples 

Double-point 

Pas dans FOR... TO 

STEP 

Décomptage avec FOR... TO 

Couleurs 

PAPER 

INK 

Remarques 

REM 

Défilé des couleurs 


Emboîtage des boucles 
Règles avec les boucles 
Sons 

CTRL/G 

PING 

ZAP 

SHOOT 

EXPLODE 

Nombres aléatoires 
RND 

Notation scientifique 
Entiers 

INT 

Bataille galactique 
RND(@) 

RND(- N) 





BOUCLES 


FOR... TO 


NEXT 


1. Boucles avec les ordres FOR... NEXT 


On a vu, dans le chapitre précédent, que l’ordre GOTO pouvait commander un 
« bouclage ». L’ordre FOR... NEXT permet également la création de boucles, 
mais avec deux différences essentielles : 


1) — Voici le principal : vous contrôlez le nombre de boucles à effectuer, puisque 
FOR... TO en a fixé les limites. 


2) — Puis, mais c’est le moins important pour notre action, cette instruction se 
compose en réalité de deux ordres distincts. L’un est FOR... TO ce qui signifie 
« pour... jusqu’à » et sert à fixer des limites, le second est NEXT (« au 
suivant ! »), qui renvoie à la valeur suivante. Il faudra donc deux lignes. 

C’est facile à vérifier avec ce court programme qui va afficher les trois chiffres 1, 2 
et 3. Entrez-le en machine et exécutez-le pour voir ce que cela donne ; on vous 
l’expliquera aussitôt après ; on a fait suivre l’exécution, ici : 


74 


ORGANIGRAMME 
DE LA BOUCLE 


FOR... TO 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


ON BON 
CC 2666 


C'est fini! 


Que s’est-il passé ? A la ligne 19, on a fixé les limites de N, qui pourra aller de 1 à 3, 
en commençant par 1. 


Le comptage se fait par unités successives : 
1, puis 2, puis 3... A moins qu’on n’ajoute 
des ordres contraires, comme on va le voir 
plus loin. 


Puis, en 29, on commande l’affichage de N, donc de 1 au premier tour. Le pro- 
gramme rencontre alors la ligne 39 qui lui demande le N suivant ; il se branche alors 
à nouveau en 19 et, s’apercevant que la valeur 1 a déjà été utilisée, prend la 2 et 
l’attribue à N. En 24, il affiche 2, Puis passe en 39 qui renvoie en 19 où N prend la 
valeur 3. Celle-ci est affichée à son tour, puis 39 renvoie encore en 19 mais là, le 
programme s’aperçoit que toutes les valeurs possibles ont été utilisées. Par consé- 
quent, il saute toute la chaîne et poursuit à l’instruction suivante qui est la 49 ; il 
affiche alors « C’est fini ! ». 


Lorsque toutes les valeurs permises ont été 
utilisées, le programme passe à l'instruction 
qui suit la ligne NEXT. 


On peut illustrer ce processus à l’aide de l’organigramme ci-contre. 

Remarquez le losange de l’organigramme : il pose une question, contenue implici- 
tement dans l’ordre FOR... TO : /a valeur finale est-elle dépassée ? si non, on bou- 
cle ; si oui, on passe à l’instruction suivante. On emploie donc deux sommets de ce 
losange, selon que la réponse est NON ou OUI. Chaque fois qu’on posera une 
question, on l’insérera dans un losange. 

L’instruction de traitement contenue dans la boucle peut fort bien faire appel à 
autre chose que la variable contenue dans la boucle FOR... TO ; modifiez simple- 
ment le programme précédent à la ligne 29 pour obtenir : 


19 FOR N=1 TO 3 
29 ?7"OUI,'; 
39 NEXT N 


49 ? "C'est fini!" 


RUN 
OUI,OUI,OUI, C'est fini! 





COULEURS ET SONS PROGRAMMÉS 75 





Initialisation de la boucle : 
on fixe les valeurs limites 











de. à soit FOR... TO de la Ligne 19 
variable (N, ici) 
Instruction de traitement : 
ici, l’affichage de N Ligne 20 
Valeur suivante de N Ligne 30 









Boucle 

FOR … TO Question 
implicite 
de FOR .… TO 





Dépasse-t-on la 
valeur finale ? 


Affichage final de 
W C'est fini ! ” 





Ligne 49 





Organigramme de la 
boucle FOR... TO 





Comment faire pour écrire C’est fini ! sur la ligne suivante ? Réfléchissez un ins- 
tant : il faut annuler l’effet du point virgule prédécent, de la ligne 29, mais seule- 
ment lorsqu’on sort de la boucle. Qu’à cela ne tienne : on va placer un PRINT rien 
du tout, sans point-virgule final, lui ; on obtiendra cet affichage sur /a même ligne 
que les OUI,OUI,OUI, mais il provoquera un retour à la ligne pour l’affichage 


final. Cela donne, en récapitulant : 
Ajouter cette ) 
instruction … 
TT 









Nous avons mis 
PRINT en toutes 
lettres en supposant 
que vous avez fait 
un LIST 














19 FOR N=1 TO 3 

29 PRINT "OUI," 

39 NEXT 

35 PRINT 

40 PRINT "C'est fini!" 
RUN 

OUI,OUI,OUI, 

C'est fini! 









… Et l'affichage final 
se fera sur la ligne 
suivante 







Et comment pourriez-vous faire pour séparer d’une ligne vide les « OUI,OUL,OUI », 
de « C’est fini ! » ? On nous l’a déjà dit dans le chapitre précédent, rappelez- 
vous : placez un autre PRINT : 


76 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 






Ce PRINT 
commande … 











19 FOR N=1 

20 PRINT ‘ 

30 NEXT N 

35 PRINT 

36 PRINT 

49 PRINT "C'est fini!" 

RUN . Ce saut de 
OUI,OUI, OUI, ligne 
C'est fini! 


Mais pourquoi employer deux lignes, 35 et 36, qui ne comprennent pas grand chose 
chacune ? Ne pourrait-on les regrouper ? Oui, le Basic accepte qu’on place plu- 
sieurs instructions sur une unique ligne (avec un unique numéro). 






Pour séparer des instructions sur une ligne, 
on place un double-point (:). C’est le 
« séparateur » officiel. 





INSTRUCTIONS 
MULTIPLES 


DOUBLE-POINT 





Aussi, on peut ré-écrire encore ainsi le programme précédent, en cumulant même 
3 lignes. Commencez par supprimer 35 et 36, puis refrappez ainsi la ligne 49. 
















Ne vous égarez pas 
dans tous ces : 
? 









3 instructions 
sur une seule 
ligne 


Les : servent de 
séparateurs 











49 77:27:77 "C'est fini!” 


N 
Tr TOUT: 
T:PRINT:PRINT "C'est fini!” 


Le RUN, bien entendu, procurerait le même résultat que ci-dessus. 


PAS DANS FOR... TO 


STEP 


2. Boucles FOR... TO avec un pas 


On a vu que la boucle FOR... TO « incrémentait » la variable d’un pas positif uni- 
taire : la variable N passait successivement à 1, puis 2, puis 3. Or, on peut lui impo- 
ser un pas différent, par exemple un demi, ce qui s’écrit 9,5 en français courant. 





COULEURS ET SONS PROGRAMMÉS 77 





Or, rappelez-vous que le Basic, d’origine 
anglaise, place un « point » décimal là où 
nous mettons une « virgule » décimale. Donc, 
au lieu d’écrire 9,5 on écrira 9.5. 

Bien mieux, le Basic estime que le 9 avant 

le point est encore superflu. On peut donc 

se contenter d’écrire .5. 


Si vous placez cependant un 9, cela ne constitue pas une faute. 
Avez-vous conservé en mémoire le programme précédent ? Si oui, commencez par 
modifier la ligne 19 pour obtenir : 


19 FOR N=1 TO 3 STEP .5 


Pour apporter cette correction, on va employer EDIT. Faites successivement. 
e EDIT 19, puis RETURN. La ligne 19 apparaît sur l’écran. 

e Avec CTRL/A, amener le curseur après le 3 de ’’ FOR N=1 TO 3”’. 

e Frappez alors STEP .5, puis RETURN. 


La correction est achevée. Modifiez alors les lignes 29 et 49 pour obtenir : 













19 

20 

30 

49 

RUN | 
1 Voici le 
1e résultat 
2.5 

3 

C'est fini! 


Vous pourriez choisir un pas absolument quelconque, par exemple de 2. Modifiez à 
nouveau la ligne 19 ainsi, et lancez le programme ; cela donnera : 









19 FOR N=1 TO STEP 2 
29 PRINT N 
89 NEXT N 
49 PRINT "C'est fini!” 
On a compté 
1 DR | 
3 | 
C'est finil! 


78 PRATIQUE DE L'’ORIC 1 ET 36 PROGRAMMES 





Le pas peut être négatif, si l’on veut décompter, mais il faudra alors aller de 3 à 1 et 
non plus de 1 à 3 ; il suffit, à nouveau, de ne modifier que la seule ligne 19 : 


DECOMPTAGE 





AVEC FOR... TO 





Veillez à bien 
écrire : de 3 
à 1 






9 FOR N=3 TO 1 STEP 
9 PRINT N 

9 NEXT N 

9 PRINT "C'est fini!” 
U 





Vous pouvez combiner tout ceci à volonté, pas quelconques, positifs ou négatifs. 
Faites quelques expériences par vous même, pour bien « vivre » cet ordre. 


3. Avec 8 couleurs 


Votre Oric — 1 dispose de 8 couleurs, le blanc et le noir compris. Chaque couleur se 


voit affecter un numéro et c’est par ce numéro qu’on l’appellera. Il s’agit de : 
COULEURS 
COULEUR NUMERO 


0 
1 
2 
3 
4 
5 
6 
7 
Vous pouvez mettre en couleur la « page de texte », l’équivalent de la feuille qui 


apparaît sur l’écran et s’appelle en langage Oric « PAPER », ou le texte lui-même : 
PAPER INK (pour encre). 
Commencez par mettre la page en rouge. Faites : 


Avec RETURN, la «page» 
va passer au rouge 


















Jaune 
Bleu 
Magenta 


C'est un 
bleu-vert 





PAPER 1 














Avec RETURN, 
le texte se met en vert 






REMARQUES 


COULEURS ET SONS PROGRAMMÉS 79 


Ne soyez pas trop exigeant avec votre 
téléviseur couleur : les couleurs pourront 

« baver » un peu, ou ne pas être rigoureusement 
celles annoncées. Après tout, qu'importe si 

le résultat reste intéressant ? Nul n’est 
parfait, encore moins les réglages de votre 
téléviseur. 


Voici, maintenant, un petit programme destiné à faire défiler les 8 couleurs, cha- 
cune restant affichée une seconde, en « page ». Rappelez-vous que lorsque l’encre 
et la page sont de la même couleur, l’affichage se perd, devient invisible. Ce pro- 
gramme emploie une boucle FOR... TO. En outre, on lui a ajouté un titre, sous 
forme de remarque. 


L'ordre REM, pour « remarque », sert à 
placer des explications pour celui qui lit 

le programme, et uniquement pour lui. 
Lorsque le Basic rencontre l’ordre REM , il 
saute tout ce qui suit et passe à la ligne 
suivante. 


Voici ce programme : 










C'est une «REMarque» ; elle ne joue aucun rôle 





0 REM Defile des couleurs | 
0 FOR P=9 TO 7 La variable P va 
9 PAPER P prendre toutes les 
1) 
) 


valeurs, de O0 à 
7 







WAIT 100 
NEXT P 
? "C'est 






O O1 BR © N = 







fini!” 





Pour laisser la couleur 
affichée pendant 


Faites un RUN : les 8 couleurs vont se succéder. Si vous voulez que le processus 
continue, remplacez 69 par : 


La boucle sera bouclée à perpétuité, ou jusqu’à un CTRL/C. 


Compliquons le jeu en faisant varier la couleur de la feuille (PAPER) mais aussi 
celle du texte (INK), à l’aide de deux boucles, cette fois : une boucle P pour 
PAPER, et une boucle I pour INK. Le principe est le suivant : on affiche une page 
d’une couleur donnée, puis on fait défiler les couleurs du texte ; lorsqu’elles sont 
toutes passées, on change la couleur de la page et on recommence ; etc. Etudiez 
bien ce programme pour comprendre le fonctionnement de ces deux boucles, car 
c’est très important ; c’est le seul concept nouveau que nous voulons d’ailleurs vous 
présenter ici. 


80 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Plus exactement, le processus sera le suivant ; 






e La page passe en noir (9) 
— le texte passe en noir (@) 
— En rouge (1) 
— En vert (2) 
— En jaune (3) 
— En bleu (4) 
— En magenta (5) 
— En cyan (6) 
— En blanc (7) 






On a là une 
sorte de «petite» 
boucle interne … 










Et par 
opposition, une 
«grande» boucle 
externe 


e La page passe en rouge (1) 
— Le texte passe en noir @ 
— En rouge (1) 






Ici, répétition de la 
«petite» boucle interne 










.… Etc. ! 
(Grandes boucle : Le programme est ainsi : 
PAPER 
V RÉ 







19 REM Defile des couleurs 

209 FOR P=9 TO 7 

30 FOR 1=0 TO 7 

49 PAPER P 

50 INK | 

69 WAIT 109 Tiens, 

79 NEXT I pourquoi ? 
80 NEXT P 

90 INK 9 

199 ? "C'est fini!" 


Lancez ce programme : vous verrez se succéder les pages de couleurs, puis, et pour 
chaque page, les textes en couleurs. A la fin, en ligne 99, on a placé un INK 6, 
pouvez-vous deviner pourquoi ? La dernière « image » couleur de ce programme 
donne INK 7 et PAPER 7, donc du texte blanc sur fond blanc ! Vous ne lirez pas 
grand chose. Aussi a-t-on rétabli l’encre en noir (9). 


Notez ce point capital : les deux boucles sont 
« emboîtées », la « petite » est intégralement 
contenue dans la « grande », ce que l’on a 
marqué sur le listage du programme. 


L’organigramme du programme (ci-contre) montre bien, lui aussi, la présence de 
ces deux boucles. 





EMBOITAGE A ne jamais 


oublier 





DES BOUCLES 





Deux boucles (deux, ou davantage) doivent 
être soit totalement emboîtées (contenues 
l’une dans l’autre), soit totalement distinctes. 


On peut illustrer cela ainsi : 


Grande 
boucle 


Organigramme de la 
double boucle de couleurs 





COULEURS ET SONS PROGRAMMÉS 


Titre sous forme de remarque 


Limites des couleurs de page : toutes (9 à 7) 







Limites des couleurs de texte (INK) : les mêmes 


Commande de mise en couleur du papier 
Commande de mise en couleur du texte 
Temporisation 












Petite 
boucle 





A-t-on fait défiler toutes 
les couleurs pour le 
texte ? 





(Alors à la suivante) 


A-t-on fait défiler toutes 
les couleurs pour la 





(Alors à la suivante) 









Affichage final 


81 





82 


REGLES AVEC 


LES BOUCLES 





CTRL/G 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Boucles 


emboîtées 


Lu 


Pas de chevauchement, SVP ! 


Boucles 


distinctes [ | > 


Cela signifie encore que, si on ouvre la boucle À, puis on démarre la boucle B, i/ 
faut refermer d’abord B (avec un NEXT B) puis après seulement A (avec un NEXT 
A). Sinon, vous commetteriez cette erreur typique des débutants, 

Revoyez le programme ci-dessus : on a ouvert (FOR... TO) la boucle P, puis I, 
mais on a refermé d’abord I (avec le NEXT de la ligne 79) puis P (avec le NEXT de 
89). Il n’aurait pas fallu faire l’inverse : attention à ce type d’erreur ! 


Nous supposons que vous multipliez 
maintenant les essais. Si vous sentez que vous 
perdez la maîtrise de l’Oric, qu’il « ne veut 
plus vous obéir », c’est que vous avez 
commis une erreur quelque part, ou une 
fausse manipulation. Dans ce cas, n’hésitez 
pas à faire un « RESET ». 


Pour cela, retournez l’Oric — 1 et insérez la pointe d’un crayon dans la grande fenê- 
tre qui apparaît en-dessous. Pressez le poussoir (que vous ne distinguerez pas : 
dommage !). Vous provoquez ainsi ce redémarrage qu’on appelle le RESET 
(« remise en condition de départ »). Il laisse intact le contenu des mémoires centra- 
les. On l’appelle encore un redémarrage à chaud. 

N'oubliez pas, non plus, de faire NEW pour effacer la mémoire lorsque vous 
redoutez qu’un nouveau programme n'’interfère fâcheusement avec un ancien. 


4. Des sons aussi 
Votre Oric dispose de la couleur (on vient de le voir), sait dessiner (patience : 


d’autres chapitres suivent !), et produit des sons ou même de la musique. On va 
examiner ici les sons, laissant la musique à un prochain chapitre. 


Vous avez d’abord remarqué que CTRL/G produisait un tintement de clochette. 
Vous obtiendrez le même effet, dans un programme, en écrivant PING. Essayez, 


en mode direct : 
ue se (Puis RETURN ) — —— sf —— 
PING 





Chaque touche est, en outre, sonorisée. Vous pouvez supprimer ce son en faisant 
CTRL/F, ou le rétablir avec la même combinaison (vérifiez-le). 


COULEURS ET SONS PROGRAMMÉS 83 





Mais voici mieux : 


e L’ordre ZAP produit un sifflement décroissant sensé imiter une arme galactique 
à laser. C’est une simple question d’imagination ! 


e L’ordre SHOOT simule le bruit d’uh coup de fusil. 


e Enfin, EXPLODE, comme son nom l’indique, simule une explosion. 


SHOOT 


Expérimentez ces ordres en mode direct, puis organisez une fusillade galactique 
EXPLODE avec la séquence suivante : 









Pour 10 tirs 










19 FOR N=1 TO 19 
z ; Le . : C'est le son de l'arme 
20 NEXT N galactique 


Avec le RUN, vous entendrez dix tirs galactiques, très réguliers. Trop, même : il 
faudrait qu’ils surviennent un peu à l’improviste, au hasard ; mais ça aussi, votre 
ordinateur sait le faire. 


5. Nombres au hasard et bataille galactique 


Une fonction spéciale du Basic sert à tirer des nombres au hasard, c’est RND ; ces 
lettres proviennent du mot anglais « random », soit aléatoire, au hasard. L’ordre 
NOMBRES ALEATOIRES RND demande à être suivi par un nombre absolument quelconque mais placé entre 
parenthèses ; le Basic a, parfois, de telles fantaisies. Ne mettez ni zéro, ni nombre 
négatif, et par paresse, utilisez le 9 qui se trouve situé sur la même touche que 
l’ouverture des parenthèses. Essayez simplement en mode direct : 






Ordre de tirage et d'affichage 
d’un nombre aléatoire 










L'auteur a obtenu cette valeur 
bizarre, un peu inférieure à 1. Vous tirerez 
peut-être une autre valeur 






Créons un court programme pour afficher plusieurs valeurs aléatoires. Voici ce 
programme, suivi d’un RUN : 










nr Pour dix 
valeurs aléatoires 










19 FOR N=1 TO 19 

29 ? RND(9) 

30 NEXT N 

RUN 

.103117626 

HU Voice ue ot 
.551834438 a obtenu 
.617419111 

.960296981 

.547150891 

.802192734 

.814107273 

.131137465 


84 


NOTATION 


SCIENTIFIQUE 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Il est possible que vous obteniez les mêmes valeurs ; en tous cas et à chaque remise 
en service de l’Oric — 1, vous retrouverez la même série. 


En effet, ces valeurs sont appelées 

« aléatoires » mais elles sont en réalité 

« pseudo-aléatoires ». Elles appartiennent à 
une très grande série répétitive de nombres, 
toujours inférieurs à 1. 


Parfois même, vous obtiendrez des nombres tellement petits qu’ils seront affichés 
en notation scientifique. Ce type de notation utilise les puissances ; si vous les avez 
étudiées, cela ne vous déconcertera pas. Ainsi, rappelez-vous qu’un 1 suivi de 
douze zéros (soit 1909000000009) peut s’écrire aussi 19!2 en écriture courante. De 
même, un millionnième (9,999991) peut s’écrire 19-6. En informatique, on écrira : 


1E +12 pour 10!2 
1E — 96 pour 19-6 


La lettre E représente la « base » 19 ; le cœfficient qui suit, avec son signe, est 
l’exposant. Avant le E peuvent se trouver d’autres chiffres, avec le signe plus ou 
moins. 


C’est ce mode d’écriture qu’on appelle donc la notation scientifique ; ne vous lais- 
sez pas démonter par elle et, à la rigueur, ignorez les valeurs aléatoires en notation 
scientifique ! 


Mais revenons à nos tirages : les nombres sont bien petits, et il va falloir les multi- 
plier sérieusement pour obtenir des valeurs supérieures. 


D'’abord, notez que les tirages sont compris 
entre # (qui peut être tiré) et 1 (mais le 1 ne 
sera jamais tiré : on ira jusqu’à 
9.999999999...). 


Si l’on veut obtenir des valeurs comprises entre Ÿ et 15, par exemple, il faudra mul- 
tiplier les nombres tirés par 15. Modifiez la ligne 29 du programme précédent pour 
introduire la multiplication par 15, et relancez-le. Vous souvenez-vous comment 
l’on procède pour modifier une ligne ? Utilisez LIST, ou LIST 29, ou EDIT 29 au 
choix. Cela donnera : 













19 FOR N=1 TO 19 

29 PRINT RND(9)*x15 

30 NEXT N 

RUN 

7.5769316 

en ess Valeurs obtenues 
1.90229746 par l'auteur 
8.08945929 

12.0876921 

9.32972512 

13.1995662 

4.19004824 

14.9729614 


ENTIERS 


INT 


BATAILLE 


GALACTIQUE 





COULEURS ET SONS PROGRAMMÉS 85 


Remarquez qu’en multipliant par 15 des 
valeurs comprises entre 9 (inclus) et 

1 (exclu), on peut obtenir toutes les valeurs 
entre Ÿ (inclus) et 15 (exclu), donc 14,9999... 


Ces nombres décimaux sont encore très embarassants. On va éliminer la partie 
décimale (à droite de la virgule, pardon : du point décimal) en réclamant au Basic 
la seule partie entière de ces nombres. Sachant qu’entier se dit « integer » en 
anglais, vous comprendrez pourquoi l’ordre se code INT. 


Vérifiez le fonctionnement de INT en mode direct ; il exige que le nombre soit mis 
entre parenthèses à sa suite. Par exemple, faites : 









L'’entier de 123, 456, 
est bien 123 


? INT(123.456) 
123 


En passant, notez une singularité de l’ordre INT : il n’arrondit pas et fournit tou- 
jours la valeur entière immédiatement inférieure. Par exemple (vérifiez-le) : 










L'entier (immédiatement 
D D nm rt inférieur) de 7,89 est 


? INT(7.89) bien 7 
7 


Ready 
? INT(-7.89) 







… Mais celui de - 7,89 


Refermons cette parenthèse pour en ouvrir d’autres, à la ligne 29 et comme 
annoncé. Modifiez cette ligne de façon que le programme soit le suivant, puis 


lancez-le : mm, 
Attention aux parenthèses : il 


faut toujours en refermer autant 
qu'on en a ouverts ! 
























19 FOR N=1 TO 19 

20 PRINT INT(RND(9)*x15) 

30 NEXT N 

RUN 

9 

19 

8 

7 L'auteur a 
\ obtenu ces 
À belles valeurs entières, 
1 cette fois 
14 

13 


Enfin, nous disposons de valeurs faciles à comprendre et à exploiter : on va les 
introduire dans notre guerre galactique pour espacer au hasard les tirs. Ce nouveau 
programme résulte de l’introduction d’un tirage aléatoire entre 9 et 15 dans 
l’ex-ordre 39 de temporisation du programme galactique précédent. Voici ce que 
cela donne : à 


86 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


19 FOR N=1 TO 19 

29 ZAP 

30 WAIT INT(RND(9)*x15) 
49 NEXT N 


C’est déjà plus réaliste. N’hésitez pas à varier la temporisation en multipliant par 
199 au lieu de 15, dans la ligne 29, par exemple, ou par d’autres valeurs. 


Sachez cependant encore deux choses, à propos de l’ordre RND : 


e Si vous faites RND(9), le Basic vous renverra le dernier nombre aléatoire tiré, et 
non un nouveau. 


e Si vous utilisez un nombre négatif, par exemple RND(-—9), vous recevrez une 
valeur, fixe, et liée au nombre négatif, qui détermine le point de départ de la série. 
Ainsi pourriez-vous la modifier à chaque lancement. 


Ainsi, avec RND(—9), l’auteur a toujours obtenu (en notation scientifique, remar- 
quez) 3.3647666E — 8. D’autres valeurs négatives fournissent d’autres nombres. 
Nous nous en serions voulu de ne pas vous l’avoir précisé ! 


COULEURS ET SONS PROGRAMMÉS 87 





QUESTIONS SUR LE CHAPITRE V 
N'hésitez pas, dès maintenant, à imaginer par vous-même des courtes séquences de 


programmes. C’est, de loin, le meilleur exercice. Mais voyons, au préalable, si vous 
répondrez facilement à ces quelques questions fondamentales. 


Y a-t-il ou n'y a-t-il pas d'erreur dans les lignes suivantes, extraites de 
leur contexte ? 


. FOR N=1 TO N=23 

. FOR N=37 TO 73 

. FOR N=37 TO 73 STEP 25 

. FOR N=37 TO 73 STEP 14 

. FOR N=37 TO 73 STEP .91 

. FOR N=37 TO 73 STEP —25 

. FOR N=37 TO 9 STEP -.1 

. FOR N=1 TO 3:?N: NEXT N 

. FOR N=T+2TOT+5:7T: NEXTT 


Bon ! Si vous vous en êtes bien sorti, bravo. Continuons, alors : 


10. L’ordre PAPER 3 commande : 
CO Le passage en jaune (couleur 3, c’est vrai !) de la page 
CO Le passage en jaune du texte 


11. L'ordre INK = 1 commande 
[] Le passage en rouge (couleur 1, c’est vrai aussi !) de la page 
O Le passage en rouge du texte 


12. La réponse de l’ordinateur à une instruction 99 REM 4 *4 sera : 
O1 16 
[1 Rien du tout ! 


13. L’ordre RND sert à 
CO Fournir une valeur aléatoire 
C Rendre (« RND ») des couleurs ou des sons 


14. Pour la machine, RND(9) et RND(18) sont-ils équivalents ? 
O Oui 
CO Non 


Et pour terminer, une question très difficile : 


15. Vous voulez simuler un jet de dé, donc obtenir toutes les valeurs comprises entre ÿ 
(inclus) et 6 (inclus). Quel ordre appliquerez-vous : 
[1 ? RND(6) 
O ? INT(RND(9) *6) + 1 





Réponses page 88 


88 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





COMPTE À REBOURS 
FOR NEXT PING 





Dans les jeux chronométrés, il est souvent plus utile de savoir le temps 
qu'il reste à jouer. Il n’y a qu’à décompter, par exemple à partir de 60 jusqu’à 
zéro, en Ôtant 1 chaque seconde : 


FOR S=60 TO 1 STEP -Ii 


CLS 

PRINT S REMARQUES 

WAIT 95 40 — pause pour battre la seconde 
NEXT S 70 — le gong ! 


PRINT S 
PING 





REPONSES AUX QUESTIONS SUR LE CHAPITRE V 
1. Non, ça ne va pas ! Le nom de la variable ne doit être écrit qu’une seule fois. Il 
fallait écrire : 
FOR N=1 TO 23 
2. Cette ligne est parfaitement correcte. 


3. Celle-ci aussi. 


4. Oui, celle-ci aussi : le pas est très grand, aussi n’y a-t-il que le 37 qui sera pris en 
compte car, au tour suivant, on passerait à 137 ce qui excède la limite de 73. 


5. C’est parfaitement correct : le pas peut être tout petit. 


6. Alors là, rien ne va plus : essayez donc de décompter (— 25) en accroissant des 
valeurs de 37 à 73 ! 


7. Ici, tout va bien car, avec le pas négatif, on a inscrit un décomptage de 37 à zéro. 


8. C‘est parfaitement correct. Rappelez-vous que le double point est un séparateur 
d’ordres sur une même ligne. 


La suite des réponses page 96 


COULEURS ET SONS PROGRAMMÉS 89 





DE ZÉRO À 99 
FOR NEXT 





CLS 

FOR D=@ TO 3 
FOR U=8 TO 3 
PRINT U+1@XD; 
NEXT LU 

PRINT 

NEXT D 





Dresser le tableau des nombres de 0 à 99 en les groupant par 10 sur cha- 
que ligne : 0 à 9 sur la première, 10 à 19 sur la deuxième... Pour cela on 
peut distinguer le chiffre des unités et celui des dizaines. 

Pour chaque dizaine, il faudra donner au chiffre des unités toutes les 
valeurs de 0 à 9 et les afficher sur la même ligne. Puis on passera à la ligne 
et on répètera ceci pour que le chiffre des dizaines aille lui aussi de 0 à 9 : 


REMARQUES 
20 à 70 — boucle sur les dizaines 
30 à 50 — boucle sur les unités 


60 — à la ligne ! 


Lancez ce programme et vous obtiendrez : 





90 PRATIQUE DE L’'ORIC 1 ET 36 PROGRAMMES 





LE HASARD CET INCONNU 
FOR RND INT 





Pour vous permettre de bien exploiter la fonction RND qui fournit dans 
certains cas un nombre à peu près imprévisible, nous vous proposons ici quel- 
ques petites expériences sans danger, tant que vous n’engagez pas de pari ! 

D'abord un galop d’essai : tirage de 10 nombres grâce à RND(1) : 


19 FOR N=1 TO 18 
28 PRINT RND(CI) 
30 NEXT N 





si vous utilisez ce programme plusieurs fois de suite, vous obtiendrez cha- 
que fois 10 valeurs différentes : 


.973136996 
. 1203117626 
.01/77148333 
. 2929343355 
.391834438 
.617419111I 
. 3602369381 
.547150891 
. 8902192734 
.814127273 





Après chaque utilisation du programme, tapez en mode immédiat : 


PRINT RND(G) 


8141087273 





vous devez obtenir la dernière valeur fournie par le programme. Ça peut servir 
si on a besoin de cette valeur et qu’on ne l’a pas mise en conserve. 

Et RND(- 1), par exemple ? Pendant la période de mise au point d’un 
programme, on est amené à changer une ligne par ci, une valeur par là. Si 
en plus le programme produit des valeurs aléatoires qui changent d’un essai 
au suivant, on ne peut plus rien contrôler. Avec une valeur négative dans 
sa parenthèse, la fonction RND fixe le point de départ d’une suite de valeurs 
obtenues avec RND (nombre positif). 


COULEURS ET SONS PROGRAMMÉS 91 





19 PRINT"'AMORCE ";RNDC-1) 
2@ FOR N=1 TO 10 


30 PRINT RND(1) 
49 NEXT N 





deux utilisations successives de ce programme fournissant la même suite de 
10 valeurs, avec en-tête l’amorce. 


RUN 

AMORCE 2,99196472E-08 
. 2382075002 
. 2272707136 
. 2939733446 
. 54034268 

. 8784887655 
.0@517244711 
. 06646660AS 
. 8936393669 
.92182/414 
. 33553650? 


RUN 

AMORCE 2.99196472E-08 
. 2382087502 
. 2727807136 
. 233/33446 
. 24034268 

. 8784887765 
.@517244211 
. 2066466605 
. 8336393669 
.92182/414 
. 3353536507 





En changeant la valeur négative on change l’amorce, donc la suite de 
valeurs. 


RUN 
AMORCE 2.939205567E-08 


. 2273385388 
. 6219366945 
. 3693081192 
. 3008018338 
. 3722401276 





92 PRATIQUE DE L'’ORIC 1 ET 36 PROGRAMMES 





. 2048888672 
. 3271833163 
. 4342293892 
. 3022435673 
, 4581352464 





Par contre si l’on change la valeur positive à la ligne 30, on ne change 
pas de suite. 


RUN 

AMORCE 2.9389205567E-08 
. 2723385388 
. 6219669435 
. 3698081192 
. 3008018938 
-3/2401276 
. 0248888672 
.971839163 
. 4342293892 
. 3802435673 
. 4458152464 





Et même si cette valeur change d’un tirage à l’autre, la suite reste immua- 
ble, derrière son chef de file : l’amorce. 


RUN 

AMORCE 2.939295567E-08 
. 2273385388 
. 6221966945 
. 3639081192 
. 3000189338 
-5/2401276 
. 2048888672 
.971839163 
. 4342293892 
. 3802435673 
. 4581352464 





Nous pourrions ne pas fixer l’amorce afin de laisser le hasard jouer son 
rôle dès le début. Mais alors la première valeur tirée après la mise en marche 
de l’ordinateur sera toujours la même. 


COULEURS ET SONS PROGRAMMÉS 93 





On obtiendra donc deux fois la même suite si on utilise deux fois le même 
programme, et que chaque fois aucun tirage n’a eu lieu depuis le branche- 
ment de l’ordinateur. Pour éviter cela, le programme va demander à l’utili- 
sateur de penser à un nombre de 1 à 255 et surtout de le taper ! C’est ce 
nombre qui va servir de point de départ : 


10 INPUT"TAPEZ UN NOMBRE DE 1 À 255";A 
28 PRINT'"'AMORCE ‘" ;RNDC-A) 


30 FOR N=1 TO 18 
4@ PRINT INTCRNDCI1)*%10) 
50 NEXT N 





Pour changer un peu, la ligne 40 va afficher des nombres entiers pouvant 
aller de 0 à 9: 


RUN 
TAPEZ UN NOMBRE DE 1 À 2557 123 
AMORCE 5.73991201E-08 


lci le 3 est 


sorti...3 fois ! 





Nr O Q © U1 PB © © W 





Par curiosité, comptons le nombre de sorties, pour chaque numéro en 
rangeant ces nombres dans diverses cases d’un fichier que nous appellerons 
S. Une case est repérée par la valeur de ce qui est dans la parenthèse : T. 


INPUT'TAPEZ UN NOMBRE DE 1 À 255"; 
PRINT'"AMORCE ‘" ;RNDC-A) 

FOR N=1 TD 10 

T=INTCRND(13%x10) 

PRINT T;, 

SCT)I=S(T)+1 





Ceci veut dire que si T vaut 2, on ajoute 1 dans la case n° 2 deS. Atten- 
tion, la boucle n’est pas terminée. 


PRINT :PRINT'BILAN DES TIRAGES" 
FOR T=Q TO 3 


PRINT'LE NUMERO ";T;" EST SORTI ";SCT 
JS FUES" 
30 NEXT T 





94 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


RUN 
TAPEZ UN NOMBRE DE 1 À 2557 12 
AMORCE 4.48235369E-08 
? 3 5 6 ? ? 

3 3 
BILAN DES TIRAGES 
LE NUMERO EST 
LE NUMERO EST 
LE NUMERO EST 
LE NUMERO EST 
LE NUMERO EST 
LE NUMERO EST 
LE NUMERO EST 
LE NUMERO EST 
LE NUMERO EST 
LE NUMERO EST 


OO DUO BOUN- © 
- © WU — N © Ÿ © © © 





Et pour un nombre variable de tirages : 





Essayez ce programme pour un nombre de tirages plus ou moins impor- 
tants. Tous les numéros ne sortent pas aussi souvent. Que se passe-t-il quand 
on augmente le nombre de tirages ? 


NB : La notation S(T) sous-entend en principe une réservation de 
mémoire que nous n’avons pas faite ici parce que les conditions le permet- 
taient. Pour être en règle il faudrait faire cette réservation avec l'instruction 
DIM que nous rencontrerons plus loin. 






Un coup de 
fusil-laser 


COULEURS ET SONS PROGRAMMÉS 95 





10 


POUR RÉVEILLER, SONS ET COULEURS ! 


PING ZAP PAPER INK 





Lorsqu’ün programme demande des données ou affiche des résultats 
de temps en temps, il peut être utile de le signaler au spectateur grâce à un 
son ou une manifestation visuelle. On peut par exemple sonner avant cha- 
que instruction INPUT, et tirer un coup de laser dès qu’un résultat s’affiche. 


CLS 

PING : INPUT "NOM" 3; NS$ 

PING : INPUT-PRENONM" ;P$ REMARQUES 
IP$=LEFT$SCP$,123+". " 40 — on conserve l’initiale du prénom à laquelle 
ZAP :PRINT'MONSIEUR ;IP$:;N$;" UOUS AU on ajoute le point et un espace 
GAGNE..." 

PRINT'TOUTE NOTRE ESTIMEU" 





Nous ne pourrons pas reproduire les effets sonores ici, essayer. c’est 
peut-être adopter ! 














Une clochette 





NOM? DULOUIS 
PRENOM? RENE 
MONSIEUR R. DULOUIS VOUS AUEZ GAGNE... 













TOUTE NOTRE ESTIMES 


Lorsque certains traitements sont longs, cette méthode est bien utile car 
elle évite de fixer l’écran dans l’attente de résultats. Mais si le son gêne (après 
22 h !) vous pouvez le remplacer par de la couleur. 


5 PAPER @G:INK ? 


1a 
20 
30 
35 


40 
50 
S AUEZ GAGNE..." 


52 
55 
6@ 


CLS 

INK 1: INPUT'NOM" ;N$ 

INK 2: INPUT'"PRENOM" ;P$ 

INK 7 

IP$=LEFTS$SCP$,12+". 

PAPER 1:PRINT'MONSIEUR ";IP$;N$;" UOU 


WAIT 280 
PAPER 0 
PRINT'TOLTE NOTRE- ESTIMEZ’" 








PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


NA ISEEOUR En rouge sur fond noir 
NOM? LELOIR 
rt fond noir 


En blanc sur 
fond rouge 
pendant 

2 secondes 





















NOM? LELOIR 
PRENOM? CHILDERIC 
MONSIEUR C. LELOIR VOUS AVUEZ GAGNE... 
TOUTE NOTRE ESTIMEZ 





sur fond noir 


Si vous avez essayé ce programme, vous avez remarqué que les couleurs 
ne duraient que le temps de l’introduction ou de l’affichage : nous n’obte- 
nons pas pour l’instant plusieurs couleurs d’encre ou de papier différents 
en même temps sur l’écran. Rendez-vous au chapitre suivant. 


SUITE DES REPONSES AUX QUESTIONS SUR LE CHAPITRE V 


9. Mais non, il y a une confusion entre la variable N et T qui sert à la définir. Il 
aurait fallu écrire, apparemment : 
FOR N=T+2 TO T+5:?2N: NEXT N 


10. PAPER 3 fait passer la page en jaune. 


11. Par contre INK = 1 fournit une erreur de syntaxe ! Il ne faut pas mettre de signe 
égal ; pour faire passer le texte en rouge, il suffit (et il faut) écrire INK 1. 


12. Rien du tout ! Lorsqu'il rencontre un ordre REM, l’ordinateur saute la suite et 
passe à la ligne suivante. 


13. L'ordre RND sert à tirer une valeur aléatoire. 


14. Oui : RND(9) et RND(18) fournissent le même résultat. La valeur du nombre 
entre parenthèses est sans aucune importance pour autant qu’il soit positif et non 
nul : ilest, en quelque sorte, fictif. 


15. Non, RND(6) fournit un nombre aléatoire compris entre Ÿ et 1 et ne convient 
donc pas. Réfléchissez un instant sur la seconde formule : 

RND(9) fournit une valeur entre ÿ et 1 exclu 

RND(9) *x*6 donne une valeur entre ÿ et 6 exclu 

INT(RND(9) *6) donne un entier compris entre ÿ et 6 exclu, donc entre Yet 5 inclus 
INT(RND(9) *x6) + 1 donne un entier entre 1 et 6 inclus, ce que vous voulions obtenir. 


A vous, maintenant d’imaginer.un programme pour jouer au 421 ! 


COULEURS ET SONS PROGRAMMÉS 97 





11 


NOTATION SCIENTIFIQUE 


1.23456789E + 10 





CLS 

INPUT'"UN NOMBRE 
NI=NXx10 

N2=N/10 

PRINT N1,N2 
NI=NIX19 
N2=N2/10 

GOTO 50 


Si un nombre est très petit, ou très grand, on préfère souvent l'écrire 
comme s’il était voisin de 1 en corrigeant le tir grâce à un multiple (ou un 
sous-multiple) de 10 : 


0.0000001 s’écrit ainsi 1E —-7 


c’est-à-dire une fois dix à la puissance moins sept. Pour vous familiariser 
avec ces petits et ces grands, nous allons regarder dans quel cas la notation 
scientifique intervient, grâce à un programme qui demande un nombre et 
qui le multiplie et le divise par 10, 100, 1000... jusqu’à ce que l’ordinateur 
ne puisse plus représenter un des résultats dans ses mémoires : « OVERFLOW 
ERROR IN 60 ». 


SUP" 3N 





Si on tape par exemple le nombre 185.637 on observe un déplacement 
du point (notre virgule) vers la droite lorsqu’on multiplie et vers la gauche 
lorsqu’on divise. Tant mieux ! Puis apparaît un E dans la colonne de gau- 
che et un peu plus tard dans celle de droite, pour éviter d’accumuler trop 
de zéros à droite ou à gauche. 


UN NOMBRE SUP? 185.637 
1856.37 18.563? 
18563, ? 1.85637 
18563? . 185637 
1856370 .2185637 
18563700 1.85637E-03 
1856370080 1.85637E-04 


1.85637E+09 1.8563/E-05 
1.85637E+10 1.85637E-06 


1,8563?7E +36 1.85632E-32 
1.85637E+37 1.85637E-33 
POVERFLOW ERROR IN 60 

Ready 





98 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








Avec 1 au départ, le programme se bloque au moment où N1 cherche 
à prendre la valeur 1E + 39 c’est-à-dire un nombre formé d’un 1 et de 39 zéros. 


UN NOMBRE SUP? 1 
18 st 

100 .A1 

1000 1E-03 
10000 1E-04 
120000 1E-05 
12000008 1E-06 
1802080008 1E-07 
1090800000 1E-08 
1E +093 1E-09 
1E+10 1E-10 


1E+35 1E-35 
1E+36 1E-36 
1E+37 1E-37 
1E+38 1E-38 
POVERFLOW ERROR IN 60 
Ready 


Si vous essayez 0.01, le blocage a lieu au même endroit, et N2 est devenu 
nul. 

Pourriez-vous trouver vers quelle valeur se produit le blocage, et quand 
un nombre trop petit est-il transformé en zéro ? 


COULEURS ET SONS PROGRAMMÉS 99 





12 


CONVERSIONS BINAIRE - DÉCIMALE 


FOR INT 





Vous avez vu au chapitre 1 qu’un octet représentait un nombre binaire 
composé de 8 chiffres, des zéros ou des uns. Les enfants de 6 ans évoluent 
en base deux comme un poisson dans l’eau. Mais c’est plutôt la base dix 
qui fait partie de la vie de tous les jours... heureusement ! 


Voici deux programmes permettant la conversion d’un nombre écrit dans 
notre bon vieux système décimal en un nombre binaire, et inversement. Ils 
sont faits pour des nombres compris entre 0 et 255, c’est-à-dire 0 et 
11111111 en binaire : c’est ce que peut contenir un octet. 


Conversion décimale — binaire 


18 REM CONVERSION DECIMAL-->BINAIRE RÉPARER 


2@ INPUT'NOMBRE EN BASE DIXM3N 
30 B$="" 


4Q FOR P=Q TO 7 
SQ Q=INT(N/2) 50 — quotient entier de la division de N par 2 


30 — B$ contiendra les zéros et les uns : on com- 
mence par ne rien mettre 


40 à 90 — boucle de recherche des 8 chiffres binaires 


6Q R=N-QX2 60 — reste de cette division : c’est un des huit chif- 
20 B$=STR$S(R)+BS$ fres que l’on cherche 

88 N=G 70 — ce chiffre vient se placer à gauche des précé- 
9Q NEXT P dents dans B$ 

10@ PRINT'EN BASE DEUX : ";B$ 80 — on va refaire la même chose avec Q... 


90 — .. jusqu'à épuisement des valeurs de P 





Exemples : 


RUN 
NOMBRE EN BASE DIX? 2 
EN BASE DEUX : 00080010 


Ready 
RUN 


NOMBRE EN BASE DIX? 255 
EN BASE DEUX : 11111111 


Ready 

RUN 

NOMBRE EN BASE DIX? 256 
EN BASE DEUX : @0000000 





100 





NOMBRE EN BASE DIX? 257 
EN BASE DEUX : 00008801 


Ready 

RUN 

NOMBRE EN BASE DIX? -255 
EN BASE DEUX : 90@80@G001] 


Ready 





Conversion binaire — décimale 


REM CONUERSION BINAIRE-->DECIMAL REMARQUES 
INPUT'NOMBRE EN BASE DEUX"35;B$ =. ; _. 

20 — le nombre binaire est logé dans B$ : il est con- 
D=Q sidéré comme une chaîne de caractères 
FOR P=Q TO ? 
D=D+UAL(MNID$(B$,8-P,1))X(2*P) 

40 à 60 — boucle de constitution du nomb 
NEXT P ie oucle de constitution du nombre 
PRINT'EN BASE DIX : ”;D 


30 — on met à zéro ce qui contiendra le résultat 


50 — si le chiffre binaire n° P vaut 1, on ajoute 
2'àD 





Exemples : 


RUN 
NOMBRE EN BASE DEUX? 00000010 
ENCBASE; ATX 22 


Ready 

RUN 

NOMBRE EN BASE DEUX? @1008001] 
EN BASE DIX :% 65 


Ready 





CHAPITRE VI 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 


Comment utiliser l’écran pour des tracés, des dessins et même un début d’anima- 
tion, c’est ce qu’on va étudier dans ce chapitre. Il est consacré aux modes graphi- 
ques dits à basse résolution, car l’écran est « divisé » en 39 colonnes sur 27 rangées. 
On passera au mode « haute résolution » dans le chapitre suivant, bien plus fin 
puisqu'’alors, l'écran dispose de 249 par 200 « points » graphiques. 


Principaux thèmes abordés 


Mode texte Etoiles 

TEXT RUN numéro de ligne 
Modes graphiques END 

Grille graphique STOP 

PLOT Sous-programme 
Couleurs avec PLOT Programme principal 
Barres de couleur GOSUB 

Graphique basse résolution RETURN 

LORES LORES 1 

HIRES Caractères graphiques 
LORES 9 CTRL/C 

Traits en LORES Q CONT 

Carré en LORES ÿ Mouvement 
Duplication d’instructions CHRS(8) 

Suppression du curseur CHRS(9) 

CTRL/Q 





1. L'organisation de l’écran en « mode texte » 


Pour écrire du texte sur l’écran, des lignes les unes à la suite des autres, on n’a pas 
eu à se préoccuper de son organisation. Vous savez, cependant, que la « page » de 
texte, le cadre blanc affiché, comporte 27 lignes et 49 colonnes, dont seules, 38 sont 
utilisables. La ligne supérieure, au-dessus de ce cadre (la 28°, donc), servait à divers 
messages. 


Ce « mode » de travail que l’on a exploité, 
MODE TEXTE jusqu’à présent, s’appelle « le mode texte », 
car il nous servait à écrire... du texte. En 


TEXT anglais : TEXT. 


Vous verrez l’importance de ce point quand on examinera les frois autres modes, 
dits graphiques. 





102 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





MODES 
GRAPHIQUES 


GRILLE GRAPHIQUE 
BASSE RESOLUTION 









En mode TEXT, oubliez 
la colonne le plus 


à gauche ! 


C’est dans ce cadre utile de 27 par 49 que nous allons commencer par écrire, puis 
dessiner. Pour cela, Il nous faut désigner des positions précises ; on va dessiner 
cette page avec ses lignes et ses colonnes, puis on va numéroter les lignes ef les 
colonnes (voyez notre dessin) : 


e Pour les lignes, aucun problème : on va de 9 à 26 (ce qui fait bien 27 au total). 
e Pour les colonnes : on commence par éliminer la colonne la plus à gauche, inutili- 


sable, on l’a vu. Le numéro ÿ sera donc attribué à la seconde colonne, que l’on ne 
pourra pas plus utiliser. Patience ! Puis, on ira jusqu’à 38. 










Vous ne pouvez pas, non plus, 
travailler avec la 

colonne Ÿ en mode TEXT. 
Mais vous l'emploirez en modes graphiques 





CORLONNVES 


La grille d’écran en mode « texte ». 


Voulez-vous écrire un texte au centre de l’écran, ligne 12, par exemple ? 
N’employez plus PRINT, mais PLOT (pour « dessiner »), en indiquant la position 
colonne, rangée, puis le texte à afficher. Supposons qu’on parte de la colonne 15 ; 
faites d’abord CTRL/L pour effacer l’écran, puis entrez en mode direct : 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 103 












Le mot à afficher doit 
être mis entre 

guillemets, comme 
d'habitude 






Ces deux virgules sont 
obligatoires! 







Avec le RETURN, le mot CENTRE s'inscrit. au centre de l’écran. Vérifiez sa 
position exacte sur notre grille. Faites quelques autres essais de votre crû, mais 
rappelez-vous que la « syntaxe » correcte de l’ordre est : 


Virgules 
obligatoires 


PLOT colonne,rangée, "texte" 
















Guillemets 
obligatoires 


Voici donc une façon de loger du texte là où bon vous semble. Mais pourquoi ne 
pas user de la couleur ? On peut, en effet, compléter PLOT avec un « attribut » de 
couleur, comme l’on dit dans le jargon « oricien » : c’est un nombre de plus, préci- 
sant la couleur. 


Avec PLOT et pour mettre en couleur : 

e Le texte écrit (donc, l’équivalent de INK), 
utilisez les chiffres de couleurs de 8 à 7, 
comme indiqués précédemment. 

e Le fond (la « page »), utilisez ces mêmes 
chiffres auxquels il faut ajouter 16. 


Voici ce que cela donne : 


Avec l’ordre PLOT 


COULEUR NUMERO ATTRIBUT 


[;] 16 

1 17 

2 18 

Jaune 3 19 
Bleu 4 20 
Magenta 5 21 

Cyan 6 22 

Blanc 7 23 


Maintenant, la syntaxe de l’ordre PLOT va être : 





COULEURS AVEC 






PLOT 


















C'est toujours 
du bleu-vert 












Virgules obligatoires 


PLOT colonne, rangée;attribut 


104 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





En effet, il faut choisir : l’attribut ou le texte, mais pas les deux à la fois avec 
PLOT. Essayons de passer en bleu (attribut 29) la ligne 15, à partir de la colonne 
19. Commencez par faire CTRL/L, puis entrez, en mode direct : 


Au RETURN, toute la ligne 15, à partir de la colonne 19, se teinte en bleu, ce qui 
donne ( avec de l’imagination pour la couleur) : 








Trait bleu 


Voulez-vous effacer cette couleur, de la colonne 39 à la fin ? Il suffit de re-colorier 
en blanc (attribut : 23) cette ligne, avec : 


Colonne EN 


29 JG 
30 





Rien ne vous empêche de commander maintenant, toujours en mode direct, PAPER 1 
pour voir la page devenir rouge, avec un trait bleu central, prolongé par du blanc. 


A ce propos, remarquez qu’une nouvelle 
commande PAPER, ou même INK, ne 
modifie pas la couleur d’une position déjà 
coloriée. 


La même structure d’ordre, employant comme attributs de couleur les chiffres de ÿ 
à 7, teinterait le texte (c’est l’équivalent de INK) et non le fond, selon le même pro- 
cessus. Avec une petite différence : le caractère de la première cellule s’efface ! En 
effet, rappelez-vous qu’il faut choisir : la couleur ou le caractère. Vérifiez-le en 
commandant le passage en couleurs d’une ligne de texte apparaissant sur notre 
écran. Pour éviter cet effacement et colorier toute la ligne, partez de la colonne 9. 
Ainsi, si votre texte se trouve sur la ligne 11 et que vous vouliez le mettre en bleu, 
frappez : 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 105 





Vous verrez toute la ligne 11 écrite en bleu. 

Mais faisons mieux : on va afficher des lignes de couleurs complètes, en choisissant 
la ligne au hasard et la couleur au hasard ; parce que le programme va boucler sans 
fin, une nouvelle couleur chassera l’autre dans un effet global très coloré et esthéti- 
quement déjà discutable. 


Il nous faut d’abord choisir une ligne (appelons-la L) au hasard, maïs obtenir une 
valeur entre Ÿ et 26 inclus. Rappelez-vous que RND(9) fournit une valeur comprise 
entre @et 1 exclus, donc entre Yet, dans notre écriture habituelle : 9,99999... Il fau- 
dra donc multiplier la valeur aléatoire par 27 puis en extraire l’entier, ce qui s’écrira 
INT(RND(9) *x27). 


Rappelez-vous aussi que le premier (9) entre parenthèses n’a aucune signification ; 
vous pouvez mettre 8 ou 33 ou 456, cela ne changera rien tant qu’il ne s’agira pas 
d’une valeur nulle ou négative. 

Pour la couleur dela ligne, qu’on va appeler T, pour feinte, c’est un peu plus com- 
pliqué : il faut obtenir des valeurs de 16 à 23 incluses, donc de @+ 16 à 7 + 16 inclu- 
ses. Qu’à cela ne tienne : de 9 à 7, nous savons le faire ; il suffira d’ajouter 16, ce 
qui donnera l’ordre : 


T = INT(RND(9) *8) + 16 


Dès lors, le programme est simple à rédiger : 







Choix aléatoire de 


BARRES ALEATOIRES 





19 R 
29 L 
DE COULEUR 30 T 
49 P 
59 G 









Ordre de tracé 
en couleur, 
à partir de la colonne 1 





er recommence à 
perpétuité 
NE 





Lancez ce programme, et vous verrez des lignes colorées remplir l’écran et se rem- 
placer au hasard, pour les lignes et pour les couleurs. 


2. Graphique basse résolution, mode #8 
Abordons, maintenant, le mode graphique. Il en existe deux : 
GRAPHIQUE + L’un est appelé le mode graphique « basse résolution », ce qui s’écrit LORES, de 


BASSE RESOLUTION l'anglais « low resolution », c’est-à-dire basse résolution. C’est par lui que nous 
allons commencer. 





LORES 


106 
LORES 9 










fond 
noir 






Tout cela 
apparait 


en blanc 


En blanc sur 






réellement 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


e L’autre est le mode graphique « haute résolution », qui s’écrit HIRES, de « high 
resolution ». 


Le mode LORES se divise à son tour en deux modes, appelés tout bonnement 
LORES 9 et LORES 1. A nouveau, nous allons d’abord examiner le premier, 
LORES 6. 


Commençons par informer l’Oric qu’on passe en mode LORES 9 ; pour cela, frap- 
pez en mode direct : 


Puis faites RETURN. Instantanément, l’écran devient noir, car c’est ainsi que 
fonctionne LORES  ; tout le texte en noir qui pré-existait disparaît du même coup, 
alors qu’un Ready en blanc et un curseur blanc aussi se placent là où il fallait les 
attendre, à la suite du texte pré-existant disparu. 


Recommençons alors l’expérience précédente, faite en mode texte. Frappez exacte- 
ment le même ordre, en mode direct, puis faites RETURN : 






Nous ne pouvons utilement reproduire ici tout l’écran, noir... Au RETURN, le mot 
CENTRE s'affiche au centre de l’écran, mais en blanc, cette fois. 


En « mode direct », LORES 9 (ou LORES 1) ne prolongent leur action que pour la 
seule « page » affichée. Si vous écrivez au-delà des 27 lignes, une « page blanche », 
en mode TEXT, ré-apparaît. 


En mode LORES 8 (ou LORES 1), vous 
pouvez vous servir de la colonne f. 


Vérifiez-le : faites d’abord CTRL/L pour effacer l'écran, ce qui vous ramène au 
mode TEXT puisque l’écran redevient blanc, puis frappez LORES 6, et enfin un 
caractère quelconque, par exemple l’astérisque (mais placé entre guillemets). Cela 
donne : 











L "étoile (l’astérisque) 
apparait en position 0,0 
avec le RETURN 

















Ici, 
faites 
RE RETURN) 










A propos : rappelez-vous du code ASCII ; l’astérisque a pour code 42, ce qui fait 
que vous auriez aussi bien pu écrire CHR$(42) pour obtenir le même résultat. 
Vérifiez-le, en modifiant la position, par exemple : 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 107 


Ready 
PLOT @6,@,"x" 


Ready 
PLOT 24,0,CHR$(42) 


Cet ordre place 
l'étoile ici 





Notons, maintenant, un point essentiel relatif à la couleur : 


En mode LORES # (comme avec le mode 
LORES 1 qu’on va examiner ensuite), 

le placement de la couleur se fait position 
par position. 


Cela veut dire qu’appliquer de la couleur sur une position ne remplira pas le reste 


de la ligne. Ainsi, frappez CTRL/L pour effacer la page, puis entrez en mode 
direct : 















Rappelez-vous que le double-point 
sert à séparer deux instructions 
sur une même ligne 








Couleur rouge, 
pour le fond 


LORES 9 





PLOT 19,5,17 


Avec le RETURN, la page devient noire et, sur ce fond, vous obtiendrez un unique 
pavé rouge : 











Pavé rouge 
en position 
10,5 







Le curseur : en blanc ! 
ed 







de fond est 
noir! 


Expérimentons alors le mode LORES 8 en tirant un trait horizontal sur la ligne 5, 
en rouge (couleur de page 17), d’un bout à l’autre de l’écran (de la colonne 9 à la 
38). Il faudra placer tous les pavés successivement, à partir de la position 9,5 
jusqu’à 38,5 ce qui donne (faites un NEW, au préalable) : 


108 PRATIQUE DE L’ORIC i ET 36 PROGRAMMES 


19 REM Trait horizontal 

$0 Le) 
= l'écran 

49 FOR N=0 TO 38 


59 PLOT N,5,17 
69 NEXT N 







Au RETURN, un beau trait horizontal rouge apparaît sur fond noir : 
Ready et le curseur 


sont en blanc 
Nas . 


Trait rouge sur 
la ligne 5 





Pour obtenir un trait allant de la colonne 5 à la colonne 14, donc sur 19 positions, 


modifiez la ligne 4ÿ ainsi : 
TRAITS EN 


LORES 9 





(0 positions 


Au RUN, le trait sera : 






Pour un trait vertical en colonne 5, de 19 positions, le principe est exactement le 
même et le programme serait (ne modifiez que la ligne 59) : 





Changez aussi 
le titre! 










19 REM Trait vertical 
29 CLS 

39 LORES 9 

49 FOR N=5 TO 14 
50 

60 





On a simplement 
déplacé N, pour viser 
les rangées 
successives 







PLOT 5,N,17 
NEXT N 


Au RUN, vous verrez un trait vertical rouge s’installer sur la colonne 5, et sur 19 
positions verticales. 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 109 





De là à créer un carré complet, il n’y a qu’un pas. Voici ce qu’on veut obtenir, à 
partir des mêmes positions : 


| Carré de côté =10 


Position 
5,5 
ne 14 
ne à 
5 Colonne 
14 


Et voici le programme correspondant : 













RENE £es deux côtés 
horizontaux 








CARRE EN CLS 


LORES 9 


LORES 9 





19 

20 

30 

49 FOR N=5 TO 14 
59 PLOT N,5,17 
69 PLOT N,14,17 
70 PLOT 5,N,17 ] 
80 PLOT 14,N,17 
99 NEXT N 


Les deux côtés 
verticaux 


Faites un RUN : vous obtiendrez le résultat escompté (heureusement !). Mais ce 
fond noir n’est pas heureux : pour passer le fond en vert (couleur 18), par exemple, 
il faut badigeonner successivement tous les pavés, selon le même principe, colonne 
par colonne puis, et pour chaque colonne, rangée par rangée. Pour ce faire, on va 
employer deux boucles. Voici ce programme ; commencez-le à la ligne 199, par 
exemple, sans faire NEW : 







(es pour «colonne» et 
R pour »rangée» 


REM Fond en vert 
FOR C=9 TO 38 


199 
119 
129 FOR R=9 TO 26 
1309 PLOT C,R,18 | 
149 NEXT R 
159 NEXT C 


= Voici les 2 
boucles 






Lancez l’ensemble avec RUN : le carré rouge apparaît, puis tout l’écran est passé 
au vert et le carré disparaît ! Pour bien faire, il faut faire passer les anciennes ins- 
tructions 49 à 99 après 150. 


110 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





DUPLICATION 


D'INSTRUCTIONS 





Pour déplacer des instructions, on peut 

les dupliquer. Listez le programme puis, 
comme si vous vouliez corriger une ligne, 
modifiez leur nouveau numéro en le frappant. 
Sortez de la ligne avec CTRL/A, puis faites 
RETURN. La ligne modifiée est dupliquée : 
dans un nouveau listage, elle apparaît 

deux fois : avec l’ancien et avec le nouveau 
numéro de ligne. 


Il ne reste plus, alors, qu’à supprimer les lignes inutiles. Si vous faites cela, vous 
devez obtenir (en reprenant les numéros suivants) : 


On a supprimé de 40 à 
À 100 D 






















19 REM Carré 

29 CLS 

SP RONES Pour remplir l'écran 
119 FOR C=90 TO 38 de vert : comme 
120 FOR R=9G TO 26 ci-dessus 

139 PLOT C,R,18 

140 NEXT R 

159 NEXT C 

160 FOR N=5 TO 14 

179 PLOT N,5,17 Pour afficher le carré rouge : 
189 PLOT N,14,17 instructions 40 à 90 
199 PLOT 5,N,17 de la page précédente 
290 PLOT 14,N,17 dubliouée 

219 NEXT N upriquess 






à ces nouvelles lignes 






Le RUN va verdir l’écran, puis tracer le carré rouge précédent. 


3. Ciel d’étoiles 


Puisqu’on peut placer des astérisques (des « étoiles ») sur l’écran, pourquoi ne pas 
essayer de le remplir de façon aléatoire ? On va accrocher des étoiles sur les posi- 
tions R (rangée) et C (colonne) choisies au hasard avec RND : 


Pour passer au 
mode LORES 0 












La colonne : un nombre 
aléatoire, calculé 
entre 0 et 38 
inclus 








O O1 À GO N = 
S66666 
9OTX27O0r zx 
Or Om 






D Us nn La rangée : un nombre 
aléatoire, calculé entre 0 et 26 inclus 


_—_—__——— 
Rappelez-vous le mode de calcul employé pour le tir galactique, et vérifiez qu’avec 


la ligne 39, on obtiendra bien tous les entiers entre 9 et 38 inclus alors qu’avec la 
ligne 49, on ira de 9 à 26 inclus. 









SUPPRESSION 
DU CURSEUR 





ETOILES 


DANS LE CIEL 





Séquence pour 
mettre le 

ciel en 

bleu 


RUN 


NUMERO DE LIGNE 








L'ART GRAPHIQUE EN BASSE RÉSOLUTION 111 


Faites un RUN : l’écran devient noir, et des étoiles vont s’allumer au hasard, 
jusqu’à remplir totalement l’écran : nous ne vous le dessinons pas ! 

Au cours de l’exécution de ce programme, le curseur blanc s’entête à rester sur sa 
ligne et continue à clignoter, ce qui gâche un peu l’effet. Or, on peut le supprimer. 
Stoppez ce programme avec CTRL/C, puis faites CTRL/L pour revenir à un écran 
blanc. 


Frappez alors sur CTRL/Q : le curseur 
disparaît et restera absent tant que vous 
n’aurez pas frappé à nouveau CTRL/Q. 


Or, CTRL/Q dispose d’un code numérique, qui est 17. On peut le programmer 
avec CHR$(17) ; ajoutez alors au début du programme : 


Si vous refaites un RUN, vous constaterez que le curseur a disparu. Aftention, tou- 
tefois : après le CTRL/C qui stoppe ce programme, il ne revient pas de lui-même 
(rappelez-vous que l’ordinateur se borne à obéir aux ordres) ; aussi vous faudra-t-il 
frapper CTRL/Q, ou donner l’ordre, en mode direct : ? CHR$(17). 

Fort bien, mais des étoiles blanches sur un ciel noir, c’est peu poétique. Pourquoi 
pas des étoiles sur un ciel bleu (couleur n° 4), par exemple ? On a vu, précédem- 
ment comment procéder, alors allons un peu loin : on va aussi effacer des étoiles, 
aléatoirement, avec RND. Pour effacer une étoile sur un ciel bleu, il suffira de pla- 
cer un pavé bleu à sa place (aléatoirement). L’ordre sera donc PLOT C,R,289. 
Ajoutons donc cet ordre en mêlant ces programmes, ce qui obligera à refrapper la 
suite afin d’obtenir le programme complet suivant, qui démarre en 199. Notez 
encore deux choses : 


1) — On a supprimé l’ordre INT avec RND. Maintenant que vous savez à quoi il 
sert, on peut préciser que, dans le cas précis de PLOT, ce dernier prend de lui- 
même la valeur entière des nombres qu’on lui propose ! 


2) — On a réservé un cadre bleu tout autour du ciel. Donc, les colonnes iront de 1 à 
37 et non de 9 à 38, et les rangées de 1 à 25’et non de ÿ à 26. 


Voici donc le programme au complet qu’on a volontairement démarré en 199 (sur- 
tout, ne faites pas NEW si vous voulez qu’on puisse vous faire une autre démons- 
tration) : 







Séquence pour 
allumer les 
étoiles 








Séquence pour 
éteindre des 


NNNNN = mb mb mh mb ob ob o mb md 
BON = © © © HI O O1 B ON = © 
606066060666 66066666 

r 4 

m 

* 

æ 

Q 





Pour lancer ce programme, ne faites pas RUN seulement car ce serait le programme 
précédent qui démarrerait, mais précisez la ligne : RUN 199. Dès lors, le Basic ira 
directement à 199, ignorant ce qui précède. 


112 


STOP 


SOUS-PROGRAMME 


PROGRAMME 
PRINCIPAL 









PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


On peut lancer n’importe quel programme 
en mémoire (lorsqu'il y en a plusieurs) en 
indiquant son numéro de ligne. En l’absence 
d’un numéro de ligne, le Basic recherche le 
programme qui commence par le plus faible 
numéro de ligne. 


Donc, faites : 


Vous verrez alors des étoiles s’allumer ou s’éteindre sur un fond de ciel bleu. Après 
le CTRL/C qui stoppera ce programme, n’oubliez pas de faire CTRL/Q pour réta- 
blir le curseur. 


Puisque nous vous avons montré comment démarrer un programme à partir de 
n’importe quelle ligne, ajoutons qu’on peut également marquer une fin obligatoire. 
Ce sera utile lorsque plusieurs programmes se succèdent. A la fin d’un programme, 
vous placerez l’ordre END (« fin »), comme au cinéma, avec un numéro d’instruc- 
tion. Par exemple : 


Le Basic, rencontrant END, s’arrêtera et n’ira pas chercher des instructions ulté- 
rieures qui existeraient. Ou encore, on pourra utiliser l’ordre STOP : lorsque le 
BASIC le rencontre, il cesse l’exécution mais affiche le numéro de ligne sur lequel il 
s’est arrêté. 


4. Sous-programmes 


Vous vous êtes familiarisé avec le maniement de la basse résolution, en LORES ÿ 
avec le programme précédent. Celui-ci comporte cependant une redondance peu 
élégante : les lignes 189 et 199 sont les mêmes que les lignes 219 et 229. Voici com- 
ment supprimer ce phénomène. 


On va « extraire » ces deux lignes et les placer ailleurs, par exemple en 599. Quand 
on en aura besoin, on fera appel à elles. 


Cette séquence distincte à laquelle on peut 
faire appel à volonté est désignée par le nom 
de « sous-programme ». 

Par opposition, le programme appelant est 
le « programme principal ». 


A la fin du sous-programme, on sera néanmoins contraint d’ajouter une instruc- 
tion précisant que le sous-programme est terminé et qu’il faut revenir au pro- 
gramme principal. 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 113 


De ce fait, deux ordres nouveaux intervien- 
nent : 
e i . 

RETURN GOSUB, qui « appelle » le sous-programme 
et est situé dans le programme principal. 
e RETURN qui renvoie au programme 
principal après exécution du sous-programme. 


Le renvoi se fait toujours et automatiquement 
à l’instruction qui suit l’appel par GOSUB. 


Le plus simple consiste à vous montrer comment transformer le programme précé- 
dent : supprimez les lignes 199 et 229, modifiez 189 et 219, et écrivez les nouvelles 
lignes 599 à 539 comme suit (la REM est en prime !). 


Attention : il faut écrire RETURN et non 
frapper sur la touche du même nom, à la 
ligne 539. C’est là une source de confusion 
regrettable ! 


Voici donc ce programme avec son sous-programme : 










1er appel du 
sous-programme 













190 REM Quel 
119 ? CHR$(17 
129 LORES 9 
139 FOR C=@ to 
140 FOR R=Q@ TO 
159 PLOT C,R,2 
169 NEXT R 
179 NEXT C 
180 GOSUB 509 
299 PLOT C,R,"x" 
219 GOSUB 599 
2e appel du sous- 
239 PLOT C,R programme 
249 GOTO 189 
500 REM Sous-prog 
519 C=RND(9)*x37+1 
5209 R=RND(9)x25+1 
530 RETURN 


nn no de ame 4 Ligne 220 
supprimée 








Ordre de retour 
au programme 
principal 






On peut illustrer ainsi ce programme : 


114 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Programme principal Sous-programme (sp) 





Lignes 199 


d 
110 ee appel du 


CNT 
SP 


509 Lignes 
519 
529 
539 








Et bouclage 
par le GOTO 180 







C'est le 
RETURN 





Rappelez-vous que le retour se fait 
automatiquement à l’instruction qui suit celle 
d’appel, le « GOSUB ». 


Les sous-programmes ne sont réellement très intéressant que lorsque la séquence 
passée en sous-programme est longue, ou lorsqu’elle doit intervenir de nombreuses 
fois. Ce pourrait être le cas si elle devait intervenir dans des programmes différents. 
Avec un sous-programme, en effet, on ne frappe qu’une seule fois la liste des ins- 
tructions répétitives ! En outre, on économiserait de la mémoire centrale (mais pas 
dans notre cas, où le sous-programme était vraiment trop court). 


5. Le mode LORES 1 


Passons au mode LORES 1. Dans ce mode, la différence avec LORES ÿ réside dans 


le fait qu’on change de jeu de caractères. Vous ne disposez plus des caractères 
LORES 1 alphanumériques mais de caractères spéciaux, appelés des caractères graphiques : 
un demi-pavé, ou un quart, etc. À chaque touche correspond l’un de ces caractères. 


Faites, en mode direct et après un CTRL/L : 


LORES 1 





Puis, frappez RETURN. L’écran devient noir et un mot qui devrait être « Ready » 
apparaît en blanc ; en fait, il s’agit des dessins correspondant à ces lettres ; ils n’ont 
plus aucune signification : 












Voici le caractère 
graphique pour le R 
majuscule 


Le mot «Ready» en mode 
LORES 1 (tout est blanc 
sur fond noir !) 


— — #7 Kur fond noir DZ 


Les minuscules n’ont 
que cet équivalent, 
à elles toutes 










Curseur 






L'ART GRAPHIQUE EN BASSE RÉSOLUTION 115 


Ces caractères graphiques ont pour numéro de caractère 32 à 128 en version dite 
alternée. Vous pouvez les afficher, mais en utilisant un code « secret » qui est 
CARACTERES ,CHR$(27);”’1”” et que comprend votre Basic. Par exemple : 


GRAPHIQUES 





; CHR$ (65) à ’ 
a e À est le 
) code ASCII n°65 


Mais, par contre et avec le code d’alternative : 








? ,CHR$(27); "1"; CHR$S(65) 













C'est l’autre code, 
«alterné», graphique 
du n° 65 


Pour afficher sur un seul écran tous les caractères graphiques, de 32 à 128, créez ce 
programme et lancez-le (après un NEW, éventuellement) : 









Code pour les 
caractères alternatifs 


Tous ces caractères s’inscrivent individuellement dans une « grille » de 8 par 6 
qu’on peut représenter ainsi : 





Si tout est plein, vous obtenez le pavé correspondant au curseur ; selon le remplis- 
sage, on forme tous les autres caractères, dont les graphiques. 

Pour faire défiler tous ces caractères graphiques avec leur numéro, entrez ce pro- 
gramme : | 









Pour sauter une ligne … On a simplement ajouté 


N pour afficher le code 







. Et temporiser 
un instant 


Il y a 96 caractères et l’on en place un toutes les deux lignes, de sucroît : vous ne les 
verrez pas tous d’un coup. 





116 


CTRL/C 
CONT 


MOUVEMENT 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Pour stopper ieur défilement, frappez sur 
CTRL/C. Pour le faire reprendre, faites 
CONT pour CONTinuer, en frappant ces 
lettres sur le clavier. Cette méthode s’applique 
très généralement à tous les cas de défilement. 


Au passage, remarquez le caractère 57, qui ressemblerait à une fusée : voilà qui 
peut être utile pour les jeux ! Celui qui est semblable au curseur est le 95. Le 83 est 
un gros signe « égal » (soit =). Utilisons-le pour le renvoyer d’un bord à l’autre de 
l’écran, en rebondissant. 


Il faut, tout d’abord, le placer sur la rangée choisie, 12 par exemple, en position de 
départ, à gauche, sur la colonne C= 1, par exemple. Puis, on va l'emmener de C=1 
à C=2 mais il faudra l’effacer sur C=1. Pour l’effacer, on affichera simplement 
un espace, donc ”” ”” sur la position antérieure. Démarrons ce programme en com- 
mandant un mouvement de gauche à droite (faites un NEW au préalable) : 












id RE macro Pour placer le caractère 
20 CLS 83, qui est un gros 
39 LORES 1 

40 FOR C=1 TO 38 
59 PLOT C,12,CHR$(83) 
69 PLOT C-1,12," ‘ 
79 NEXT C 






Pour l’effacer de la 
position précédente (C—1) et 
donner l'illusion du mouvement 








Lancez ce programme ; le « 83 », un gros signe égal, va se déplacer de la gauche à 
la droite de l’écran où il s’arrêtera. Il faut maintenant le faire revenir ; pour cela, le 
FOR... TO va aller de 37 à Q par pas négatif de — 1. L’effacement, lui, ne se fera 
non plus sur C —1 mais sur C +1 puisqu’on fait marche arrière. Cela donne : 





On recule, cette 









2 FOOT 82121 Que LEE! | 
99 P 1e 83 ; 
199 PLOT C+1,12," ” Nouvel affichage … 
11 
12 





. Et effacement de la 
position précédente 





Pour recommencer de 
l'avant! 






Lancez ce programme ; incontestablement, l’illusion du mouvement, de la gauche 
vers la droite et retour, et on repart, etc., est correcte. Alors, ajoutons le son, une 
sonnette au départ de la gauche, un SHOOT à l’arrivée à droite : 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 117 













35 PING 
75 SHOOT 
129 GOTO 35 









. Et modifiez le 
renvoi ainsi 


19 REM mouvement 

29 CLS 

39 LORES 12 

35 PING 

49 FOR C=1 TO 38 

50 PLOT C,12,CHR$(83) 
69 PLOT C-1,12," ‘” 

79 NEXT C 

75 SHOOT 

89 FOR C=37 TO @ STEP -1 
99 PLOT C,12,CHR$(83) 
199 PLOT C+1,12," “ 
119 NEXT C 

129 GOTO 35 


Lancez-le : c’est plus réaliste avec le son. Maintenant, à vous de tenter de l’amélio- 
rer, avec de la couleur, par exemple. Essayez : pourquoi pas ? 


6. Pour mêler les genres 


Sachez qu’on peut encore employer les caractères alphanumériques en mode 
LORES 1 ou ceux graphiques en mode LORES 6, et ce, grâce à un caractère spécial 
qui est, selon le cas : 


e Pour obtenir les caractères a/phanumériques en LORES 1, il faut donner le code 
CHRS$(8). Faites l’essai, d’abord en LORES 1 « pur » et en mode direct. 















C'est toujours notre 
gros «égal» 






Pour passer 
dans ce 
mode … 









Séparateur 
d'instructions 


| LORES ‘1 PLOT 29,19,CHR$(83) 


Au RETURN, le même symbole graphique va s’afficher, en blanc sur fond noir, à 
la position 29, 19. 


Bien : maintenant, on va rester en LORES 1 pour afficher le caractère a/phanumé- 
rique correspondant au même code 83 ; c’est un S majuscule. Pour cela, on va 
« commuter » en alphanumérique avec CHR$(8) puis, à l’aide du caractère de con- 
caténation, le symbole « plus » (+) qu’on vous a présenté au début de ce livre, on 
va demander l’affichage du S, ce qui donne (faites d’abord un CTRL/L) : 


118 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 










Commutation 
vers les 
caractères alphanumériques 










Pour 
«concaténer) 


Le caractère 
«S» 









Au RETURN, c’est un bel S qui s’affiche, cette fois, en 29,19. 


e Pour revenir aux caractères graphiques, on « commuterait » à nouveau « le cla- 
vier » avec, cette fois, + CHRS$(9). Voici un petit programme qui vous en indique le 


mode d’emploi : 
Le mot alphabétique 
à afficher 










J On commute en 
alphanumérique 










D'abord, le 


Ordre d'affichage 





On re-commute 
pour revenir au 
graphique 






dernier 
gros = 






On a utilisé la variable alphanumérique A$, définie en 39, pour bien vous faire 
comprendre le processus (car ainsi, on peut l’isoler de l’ordre PLOT). Au 
RETURN, vous verrez s’afficher à partir de 15,19 en blanc sur fond noir : 


… BONJOUR == 


e En mode LORES 9, pour obtenir les caractères graphiques, on procède de même 
mais en inversant les commandes. Ainsi, CHR$(9) fournit les caractères graphiques 
alors que CHRS$(8) ramène au « clavier » alphanumérique. 


Considérez CHRS(8) et CHRS(9) comme des 
commutateurs : 

° CHRS(8) commute vers le clavier alpha- 
numérique. 

° CHRS$(9) commute vers le clavier graphique. 


Expérimentons un dernier ordre qui s’applique aussi bien en mode TEXT qu’en 
LORES 9 et LORES 1. Passons alors simplement en TEXT, avec CTRL/L, et pla- 
çons un S en 29,19 avec un PLOT. Puis, on va demander au Basic quel caractère se 
trouve en 29,19 (en supposant qu’on l’ait oublié). Cette demande se dit PRINT 
SCRN(29,19), où SCRN vient de « screen », écran en anglais. Voici ce que cela 
donne : 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 119 









En mode texte, pour 
PR 7 ee ie afficher S en 20, 10 }- — — 
PLOT 29,19,"S" 













Ready 
? SCRN(290,19) 
83 










Maintenant, on 
demande au Basic 
ce qui se trouve en 20,10 





… Et il répond : 
«Le caractère 
de code 83», ce 


qui correspond bien 
au S (dans le code ASCII) 


Ready 









L'utilisation pratique d’une telle commande ? Pensez aux jeux : si le missile atteint 
la position du navire, tout explose ; mais où se trouvent-ils, tous deux ? Mais au 
fait, comment programme-t-on des commandes conditionnelles de ce type ? Vous 
l’apprendrez dans notre prochain chapitre. 


QUESTIONS SUR LE CHAPITRE VI 


Voici quelques questions, mais en fait, nous souhaitons que vous vous entraîniez 
ensuite à imaginer des programmes par vous-même ! 


1. En mode graphique LORES, la résolution de l’écran (le nombre de positions) est de : 
D 39 fois 27 
CO 620 par 340 


2. Peut-on écrire : PLOT *’ BONJOUR’ 
[] Oui 
[] Non 


3. Pour placer une couleur en LORES et en un point précis, l’ordre est : 
[1 PLOT colonne,rangée,couleur 
[1 PLOT couleur = rangée;colonne 


4. La différence entre LORES 8 et LORES 1 est constituée par : 
[1 La définition de la grille disponible 
[1 Le jeu de caractères 


5. Peut-on indiquer le numéro de ligne avec un RUN pour choisir entre plusieurs programmes ? 
[] Oui 
[ Non 


6. À quoi sert l’ordre END : 
[ À marquer la fin d’un programme pour le Basic | 
[1 A séparer des séquences de programmes lors de leur rédaction, afin que le pro- 
grammeur s’y retrouve. 


7. Pour appeler un sous-programme, on doit écrire : 
[] GOTO SUB numéro 
Ü GOSUB numéro. 
où numéro est le numéro de l'instruction à laquelle commence le sous-programme 


8. A la fin du sous-programme, l'instruction de retour s’écrit : 
[] RETURN numéro de ligne 
[1 RETURN 


9. Pour arrêter un défilement sur l’écran, on frappera : 
[1 RESET 
[ CTRL/C 


Réponses page 120 


120 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


REPONSES AUX QUESTIONS SUR LE CHAPITRE VI 

1. En mode LORES, la grille d’écran est de 39 colonnes sur 27 rangées. 
2. Non, la syntaxe est fausse car il faut indiquer la position. 

3. L’ordre correct est PLOT colonne,rangée,couleur. 

4. Le jeu de caractères n’est pas le même en LORES 9 et en LORES 1. 


5. Oui ; on écrira RUN 54, par exemple, pour un programme commençant en 599 
si un autre le précède. 


6. END marque la fin d’un programme pour le Basic. Mais vous pourrez aussi 
l’employer pour tester des séquences de programme que vous venez de rédiger : 
placez provisoirement un END là où vous voulez qu’elles s’arrêtent ; supprimez-le 
ensuite. 


7. Pour appeler un sous-programme, on écrit GOSUB numéro, par exemple 
GOSUB 1999. 


8. A la fin d’un sous-programme, l’instruction de retour s’écrit RETURN tout 
court, surtout sans numéro de ligne ! 


9. Pour arrêter un défilement sur l’écran, faites CTRL/C. 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 121 





13 


ARC-EN-CIEL 


LORES PLOT READ DATA 





L’instruction PLOT permet de créer très vite une bande horizontale dont 
on précise la couleur. Nous allons l’exploiter pour obtenir une palette de cou- 
leurs sous forme de bandes s’étalant sur plusieurs lignes de l’écran. Pour 
commencer, suivons l’ordre des couleurs convenu par l’Oric ; 

1 rouge, 2 vert, 3 jaune, 4 bleu foncé, 5 magenta, 6 bleu clair. 

Dans l'instruction PLOT, il faut ajouter 16 pour obtenir le code de cou- 

leur du papier. 


CLS 

L=@ REMARQUES 

FOR (ES TO 6 20 — on commence à prendre dès le haut de l’écran 

FOR N=1 TO 4 

PLOT @,L,C+16 

L=L+1 4 1e boucle pour une bande (l’équivalent de 
ignes de texte) 

NEXT N 

NEXT C 


30 à 80 — boucle sur les 6 couleurs 


50 — apparition d’une ligne colorée 


60 — passage à la ligne suivante 





L’exécution de ce programme va vous donner 6 bandes de couleur et 
une bande blanche en bas de l’écran. 

Le message Ready s’affiche vers le haut de l’écran puisqu’on n’a rien 
écrit depuis l’instruction d’effaçage de la ligne 10. PLOT ne déplace pas le 
curseur comme le fait PRINT. 





Bleu foncé 





122 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





Si l’on veut ranger les couleurs, comme elles figurent dans l’arc-en-ciel : 
violet, indigo, bleu, vert, jaune et rouge, il faut utiliser les codes dans cet 
ordre. Pour faire respecter cette succession, nous utiliserons deux instruc- 
tions nouvelles qui vont de pair : READ et DATA. 


DATA permet de constituer très facilement un fichier de valeurs, et 
READ lit ces valeurs. Si on écrit DATA 5,4,3,2,1 puis READ CO c’est la 


READ valeur 5 qui est lue et placée dans CO, comme si on avait écrit CO =S. 

DATA Si une deuxième lecture intervient avec READ CO, c’est la valeur 4 qui 
se met dans CO en effaçant la valeur 5 qui s’y trouvait comme si on avait 
écrit CO=4,. 


Mais la grande différence, c’est que si l’instruction READ CO est pla- 
cée dans une boucle, elle lira successivement les valeurs figurant dans l’ins- 
truction DATA. 


READ CO est général puisque la valeur ne figure pas, contrairement 
à CO =4 ou CO=S. On retrouve la même souplesse que pour l’instruction 
INPUT que l’auteur du programme emploie pour laisser la parole à l’utili- 
sateur, mais avec READ c’est l’auteur qui fixe les données. 


19 CLS 
snouse 
28 L=0 
30 FOR C=]1 TO 6 15 — les couleurs dans l’ordre 
35 — lecture d’un code d’une couleur 
FOR N=1 TO 4 
PLOT @8,L,CO0+16 
L=L+1 
NEXT N 
NEXT C 








L'ART GRAPHIQUE EN BASSE RÉSOLUTION 123 





CLS 

PAPER G:INK 7 
DATA 6,7,1 
FOR C=1 TO 3 


READ CO 

FOR L=@ TO 25 
PLOT (C-1)%x13,L,CO0+16 60 à 80 — boucle pour une bande : 26 lignes de haut 
NEXT L 
NEXT C 





Bleu 


Noir 


LORES 


Jusqu’à maintenant on a travaillé en mode texte. Que se passe-t-il si 
dans ce programme, on remplace CLS par LORES O, à la ligne 10 ? 

L’instruction PLOT n’agit plus sur toute la partie de la ligne située à 
droite de la case précisée, mais seulement sur cette case. 


Le programme précédent va tracer une colonne colorée comme les ban- 
des, sur fond noir, et le mot Ready s’affichera en bas de l’écran (en chassant 
d’ailleurs la moitié de la colonne violette). 

Si on change la ligne 40 : 


40 PLOT 20,L,CO +16 


la colonne se déplace au milieu de l’écran. 

Le mode LORES 1 donne le même résultat, puisqu’on ne définit que 
la couleur du papier, sans tracer de caractères. 

Vous avez remarqué que le retour en mode Texte se fait automatique- 
ment lorsqu’on atteint le bas de l’écran. 


Un drapeau 


Pour beaucoup de drapeaux, les bandes sont verticales. Notre programme 
ne convient donc pas et nous avons le choix entre deux méthodes : dessiner 
les bandes en mode graphique basse résolution en juxtaposant plusieurs colon- 
nes de même couleur pour obtenir une bande large, ou bien rester en mode 
texte : pour un drapeau tricolore, on remplira d’abord l’écran entièrement 
d’une couleur, puis en se décalant vers la droite, on modifiera la couleur 
des deux tiers de droite, pour finir avec le dernier tiers. 

Prenons le cas du drapeau français avec des bandes larges de 13 cases : 


REMARQUES 

20 — pour avoir un fond noir 

30 — les couleurs, bleu, blanc, rouge 
40 à 90 — boucle sur ces trois couleurs 


50 — lecture d’une couleur 


70 — coloration d’une ligne, ou des deux tiers de 
droite, ou du tiers 


Ready 


(Rouge 





Vous pourrez passer en revue tous les drapeaux tricolores à bandes 
verticales, en changeant simplement les valeurs de la ligne 30. 


124 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








14 


C’EST PLUS C’EST MOINS 


PLOT SGN 





10 NM=25 


Ce jeu très connu peut bénéficier d’une présentation visuelle en se ser- 
vant de l’instruction PLOT et en regardant l’écart entre le nombre à décou- 
vrir et celui que vous proposez. 

Si cet écart est plus petit que zéro, vous êtes trop bas et vous obtiendrez 
sur l’écran une ligne rouge, si vous êtes trop haut, la ligne sera jaune, et si 
vous avez trouvé elle sera verte. Vous avez droit à 20 essais, même si vous 
trouvez avant. 

Pour arrêter avant le vingtième essai, tapez (c), en maintenant la 
touche enfoncée au moment où vous appuyez sur 


On utilisera une fonction nouvelle, SGN, pour savoir si l’écart est plus 
petit ou plus grand que zéro, ou s’il est nul : SGN(—2) vaut — 1, SGN(3) 
vaut 1 et SGN(0) vaut 0. 


REMARQUES 


10 — le plus grand nombre possible 


29 CLS:PRINT'DEUINEZ UN NOMBRE DE 1 A 


1 : NM 


30 — nombre à découvrir compris entre 1 et NM, 
inclus 


30 A=INTCRNDCI)XNM)+1 


4Q FOR E=1 TO 28 
50 INPUT N 


6@ Q=SGNC(A-N) 
7@ P=CNM-N)JX26/CNM-1) c’est trouvé 


89 PLOT 18,P,18-Q 


40 à 100 — boucle donnant droit à 20 essais 
50 — introduction d’une proposition 


60 — Q=1 : c’est moins, Q = — 1 : c’est plus, Q=0 


70 — P : numéro de la ligne à colorier, entre 0 et 26 


38 PLOT 11,P,STRS$CN) 80 — apparition de la bande teinte en rouge, jaune 


100 NEXT E 





ou vert selon le cas 


90 — affichage du nombre proposé au début de la 
bande 


Utilisation : 


La ligne 20 fixe une limite pour le nombre à découvrir qui sera toujours 
compris entre 1 et cette limite. Vous pouvez la changer mais il faut que les 
nombres proposés la respecte, sinon vous obtiendrez une erreur : Illegal quan- 
tity in 80. 

Pour que le programme s’arrête de lui-même lorsque le nombre est 
trouvé, il faut ajouter une ligne dans la boucle qui force l’arrêt si Q vaut 
zéro. Ce serait le rôle de l’instruction IF... THEN... que vous rencontrerez 
dès le chapitre VII. Si vous savez déjà l’utiliser, n’hésitez pas à vous en ser- 
vir dès maintenant ! 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 125 








15 


UNE MOSAÏQUE VIVANTE 


PLOT LORES 





CLS 
CO=INTCRNDC1)%X8) 
C=INTCRNDCI)%x39) 
L=INTCRNDCI)*x27) 
PLÔOT GC; ECG 16 
GOTO 20 






Pour représenter 
les couleurs voici 
ce qu'on a trouvé : 
une bande de 

couleur c'est un 
chiffre suivi 
de @ 



















1@@@@ 
c'est une bande 
rouge qui occupe 
la place de 5 
caractères 





En mode texte l'instruction PLOT peut servir à fixer la couleur du papier 
sur la partie droite de la ligne qui commence à la case précisée. Si on l’em- 
ploie un grand nombre de fois en changeant la case et la couleur, on obtien- 
dra une espèce de mosaïque formée de bandes horizontales de largeur et de 
couleurs variées. Laissons le hasard déterminer les changements : la couleur, 
la place horizontale et verticale de la case de gauche. 


REMARQUES 

20 — la couleur 

30 — numéro de colonne 
40 — numéro de ligne 
50 — une bande 


60 — on continue 










eo4ee1ee/e70e000663e6e66ec166626611e66e] 
546260664400075e60040/e0ce65ecces/e65ecese 
eG5e623c006ce602004600406]2e6e6ee/7e0ce6e 
e266C600G6CcCC0esecccccue4cec2ec3eccecseceee 
e3e63e666c3c65e5c6c/cec]leccreceeenc6e20 
e480264861010c6e72e66600ce5cce36ce5ee/156063 
e663e77660/7e60e4646c5ecece/7eele/1@76e20 
CCCCCCCCGcCS5460346e0e6cece666c460340666e/e/ 
eeees5sce3n0644336050@]/4]106el06806eac0e] 
566022050000! ecceccece6es5ce6pele06ees5e 
e40ce56encereleces4cece/3066026456a26c827@e 
e2cec262cneccecee/730320cececne6e6e//6756e 
eCG21060@5c07ee140c06e66e44256ee0e]5e6e/ 
2200800200 2060060e0448030260005006236 
6G6@/3060260554024]500600603]060e6]160065e@ 
05e36e3@767a6e0/7406056ce64/0ee3ecce0liee 
CSO0e6CC12036e6e6e6c1621@7e0e3e2060666433 
CC1e606]cCecee6c260/]60626003010833/7e66a 
30336005 GC6LPC20600626602167666026862830 
606266061666 1001264707C6060660e]1086412 
e5a7061360660e670661607ece0066e260e5566e80 
61040108351603264602ce6cecec3e6e0cec4c6e6277 
CCCACECCCCCCCeCEGCCeeA4S52166155ce26066@ 
@63641 760101546671 060266ce6e1020165686 
4116003050 cccececec664@a/71606e/7e6e3e38840 
Se6e65@51e0cce3eeleecelecesesice626831@ 
C62010066Careec063/76671000606537962/606 




































126 








Ÿ c'est noir 
1 c'est rouge 
etc. 

selon la convention 
ORIC 










5 PRINT CHR$(127) 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Chaque nouvelle bande détruit ce qui se trouvait à sa place, jusqu’au 


10 — mode graphique basse résolution 


bord droit de l’écran. Pour composer la mosaïque avec des carreaux et non 
des bandes, il suffit de se placer en mode graphique faible résolution. L’ins- 
truction PLOT ne concerne plus alors que la case dont on fournit la position. 


REMARQUE 
10 LORES @ 


Le fond est noir et se recouvre progressivement de carreaux de couleur, 


204070403100063060607000020021460803166 
17152012210042060170052032426010003001 
23040051027000400420060086300607726710 
0072?670223005044347601600053006324648 
10020401003136210105005200202763560652 
265000024062410631041305051460533881 72 
52206003305450020063710013006303706477 
14044255530705440305514000230704040625 
133657005106030430354?176156505004 1462 
62132514031406000105200120440262034060 
06003150515020000754415075073700620120 
@0003005220411707007768715400503173706 
4008245025207070603400600120647?7506056 
04204360120014206010032555551620253325 
2000703106142560701035013020657003001@ 
60003537200300303004760177d15402061051 
10000400401301500340005174600301607300 
119303020007080131344412144300600406272 
1470855226615/7203010251060515462120360 
017066/7300701045602060603000080103540@ 
20024600046020142063254130661436072365 
4166/520400615250063750333005003205310 
2036060536060700401000103006506600475SS 
54201100666700021560001104001020120206 
4764710275040230716@040?7004036602670701 
0001007340073170010656064653361 7665205 
400806505040730100310200563534270020067 





dont le noir puisque la ligne 20 donne à CO des valeurs allant de 0 à 7. 


Tout au long du spectacle, un carré blanc ne cesse de clignoter : c’est 


le curseur. Pour le supprimer on peut ajouter la ligne : 





Quand vous aurez arrêté le programme avec CTRL C 


CTRL Q pour récupérer le curseur. 


, tapez 





L'ART GRAPHIQUE EN BASSE RÉSOLUTION 127 





16 


HISTOGRAMME 


LORES PLOT DIM 





CLS 
INPUT'"NOMBRE DE 
DIM UCNB) 


INPUT'"UALEUR MAXIMUM" ;Un 


FOR N=1 TO NB 
PRINT'UALEUR NO 
INPUT UCN) 

NEXT N 


CLS 


LORES @ 
FOR N=1 TO NB 


Un histogramme est un diagramme à barres c’est-à-dire un moyen de 
représenter graphiquement l’évolution d’un phénomène au cours du temps, 
une répartition en différentes catégories. 

Ce diagramme a l’aspect de tuyaux d’orgue : des barres verticales dont 
les hauteurs variées traduisent l’importance du phénomène à représenter. 

L’instruction PLOT utilisée en mode graphique basse résolution per- 
met ce genre d’image. Si on accepte de compter les valeurs et de chercher 
la plus grande d’entre elles, le programme qui va tracer l’histogramme peut 
se découper en deux parties : l’introduction des données, et le tracé. Nous 
traiterons un maximum de 30 valeurs et la barre la plus haute occupera 27 
lignes. 


Avec une seule couleur : 


| REMARQUES 
UALEURS" ; NB 


30 — réservation de places en mémoire vive pour 
les valeurs 


40 — VM servira à cadrer l’histogramme : la valeur 
la plus grande en haut de l’écran, zéro en bas 
"5N; 


50 à 80 — boucle d’introduction des NB valeurs 


90 — effacement de l’écran en mode texte pour 
positionner le curseur en haut à gauche 


100 — passage au mode graphique basse résolution 
110 à 160 — boucle sur les valeurs 


120 — position du haut d’une barre 


NL=INTCCUM-UCN))Xx26/UM) 130 à 150 — boucle de tracé d’une barre 


FOR L=NL TO 26 
PLOT N+8,L,17 
NEXT L 
NEXT N 





140 — barre rouge 


A la ligne 30 apparaît une instruction nouvelle : DIM. Elle permet de pré- 
voir de la place en mémoire vive pour un fichier dont le nom sera V et qui 
contiendra les valeurs introduites à la ligne 70. 

Ces différentes valeurs portent le même nom, V, et on les distinguera 
par un numéro placé entre pharenthèses (lignes 70 et 120) 

Exemple : 

Représenter sous forme d’histogramme la hauteur d’eau tombée en 
moyenne chaque mois à Brest. 


Janvier 80 mm Juillet 50 mm 
Février 72 mm Août 55 mm 
Mars 63 mm Sept. 65 mm 
Avril 54 mm Octobre 85 mm 
Mai 40 mm Novembre 100 mm 


Juin 45 mm Décembre 85 mm 


128 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 














NOMBRE DE VALEURS? 12 
VALEUR MAXIMUM? 120 








UALEUR NO 1! ? 8@ 
VALEUR NO 2 ? ?2 

VALEUR NO 3 ? 63 

UALEUR NO 4 ? 54 

VALEUR NO 5 ? 40 

VALEUR NO 6 RE RÉ a 
UALEUR NO 7 ? 50 

VALEUR NO 8 5.55 

UALEUR NQ 9 2:65 

VALEUR NO 10 ? 85 

UALEUR NO 11 ? 100 






UALEUR NO 12 ? 85 










A 
CT TN 
oo 
sl 

























A il 
A 
a 
CET 

dl 
CT LE 








Comme toujours lorsque le programme s’achève, le mot Ready appa- 
raît, en-dessous de la dernière ligne affichée par une instruction PRINT. C’est 
grâce à la ligne 90 que Ready s’affiche en haut de l’écran, sinon il pourrait 
très bien apparaître en bas et même faire glisser l’histogramme vers le haut ! 
Pour éviter que Ready ne coupe une ou plusieurs barres, on a décalé le début 
de l’histogramme en ajoutant 8 à N à la ligne 140. 


Version multicolore 


Dans cette ligne la couleur du papier est toujours le rouge (code 17). 
Pour faire ressortir encore mieux les diverses amplitudes du phénomène 
observé, on peut changer de couleur de temps en temps. On a choisi de le 
faire toutes les 4 lignes et de tolérer toutes les couleurs sauf le noir qui est 
déjà la couleur du fond ! La couleur d’une colonne dépendra de sa hauteur. 

Voici les changements à apporter : 


129 NL=INT(CUM-UCN))X26/UN) REMARQUES 


125 T=INTCNL/4) 125 — T est la teinte d’une barre 


138 FOR L=NL TO 26 


148 PLOT N+8,L,17+T 


15Q NEXT L 


140 — barre de couleur variée 


Nous ne vous montrerons pas de résultats, couleur oblige ! 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 129 





17 


UN MOT TRANSFORMÉ 


PLOT SCRN 





SCRN 


10 
20 
30 
40 
50 
68 
78 
80 


CLS 


Nous avons surtout utilisé les lettres majuscules, et pourtant votre Oric 
sait très bien afficher les minuscules, car elles ont leur code tout comme leur 
grande sœur. Le code du a est 97 celui du À 65, pour b c’est 98 et pour B 
66, c’est-à-dire qu’il suffit d’ajouter 32 au code de la majuscule pour obte- 
nir celui de la minuscule. On va même observer la transformation sur l’écran : 
la fonction SCRN permet de connaître le code d’un caractère affiché sur 
lécran. Affichons d’abord un mot en majuscules, puis grâce à SCRN, modi- 
fions le code de chaque caractère affiché. 


REMARQUES 


INPUT'UOTRE MOT" ;nS 30 — affichage du mot sur la 6° ligne à partir de 


PLOT 5,6,M$ 
WAIT 50 


FOR C=I1 TO LENCNHS$) 


CA=SCRN(C+4,6) 


PLOT C+4,6,CHR$(CA+32) 


NEXT C 





la cinquième colonne 

40 — une pause pour voir 

50 à 80 — boucle pour changer chaque lettre 
60 — CA : le code de la C° lettre du mot 


70 — affichage de la lettre transformée 


Tapez un mot, rien d’autre que des lettres. 
Votre mot s’affiche sur la sixième ligne, reste un instant puis se trans- 
forme lettre après lettre : 







VOTRE MOT? ALPHABETISATION 


Ready 






Après transformation 







alphabetisation 





Si vous tapez des caractères qui ne sont pas des lettres, le changement 
risque d’être étonnant : une virgule se transforme en L ! 

Comment conserver l’initiale en majuscule ? Il suffit de-commencer la 
transformation à partir de la deuxième lettre : 


VOTRE MOT? ALPHABETISATION 


Ready 


Alphabetisation 





130 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








18 


FAIRE-PART DE NAISSANCE 


PLOT GOSUB RETURN 





Comment écrire un mot ou une phrase en caractères de taille double ? 
En occupant deux lignes au lieu d’une aurait dit Monsieur de la Palice ! C’est 
en effet ce qu’il faut faire en prévenant sur chaque ligne que ce qui suit doit 
être soit le haut soit le bas du texte. Voici un programme très court qui affi- 
chera en gros caractères le texte que vous introduirez. Nous verrons après 
une application plus complète. 


18 CLS REMARQUES 
20 INPUT'TEXTE À TRAITER":TS$ 


30 PLOT 10,3,CHR$S(12)+T$ Onécri 
n écrit deux _… NA 
4@ PLOT 18,4,CHR$C12)+T$ Hé ltacté 30 — affichage de la partie supérieure 


en mémoire. 40 — idem pour le bas du texte 
Vous obtiendrez … 


20 — votre texte 










Le texte apparaît au début des lignes 5 et 6 (celle du haut comptant pour 
zéro). 





. sur l'imprimante 
deux fois la même 
ligne et sur l‘écran 
une seule ligne 
mais en double 
hauteur 












TEXTE À TRAITER? IL ETAIT UNE FOIS.. 


IL ETAIT UNE FOIS.. 
IL ETAIT UNE FOIS.. 






IL ETAIT UNE FOIS. 


Dans les lignes 30 et 40 c’est le code 10 qui est fourni à la fonction CHRS 
pour obtenir la double hauteur. Si on place 14 comme code, on obtient en 
plus un affichage clignotant, que nous ne vous montrerons pas. 


Le faire-part de naissance 


Ce procédé de grossissement est commode pour mettre en relief certaines 
parties du texte. Nous allons l’employer pour faire ressortir le nom et le pré- 
nom du nouveau-né dans le faire-part qui annonce sa naissance. 

Tapez le nom de famille, le prénom et la date et vous obtiendrez une 
carte facile à lire ! C’est encore une fois l’instruction PLOT qui va nous ser- 
vir aussi bien pour écrire normalement qu’en double hauteur. Et puisque 
le même travail revient plusieurs fois dans chacun des deux cas, nous fabri- 
quons deux outils, deux sous-programmes, un pour chaque mode d’écriture. 

Pour la taille normale il suffit d’afficher sur une ligne et de dire qu’il 
faut poursuivre à la ligne suivante. 

Pour la double hauteur, reprenons le programme de tout à l’heure en 
ajoutant deux précautions. Si la ligne du haut porte un numéro pair tout 
va bien, sinon le haut et le bas sont inversés : amusant ! Et puis il faut dire 
aussi de poursuivre deux lignes plus loin. 

Nous ferons appel à l’un de ces deux sous-programmes chaque fois qu’il 
faudra afficher une ligne. 


L'ART GRAPHIQUE EN BASSE RÉSOLUTION 131 














è À 




























258 
260 
270 
280 







18 CLS 
2@ PRINT'JE UAIS VOUS FAIRE UN JOLI FA 
FRE=PART" 

30 PRINT'"'DE NAISSANCE SI UOUS CONSENTE 


49 PRINT'REPONDRE À TROIS PETITES QUES 
TIONS ..” 

5Q INPUT'NOM DES HEUREUX PARENTS "3,N$ 

68 INPUT"'PRENONM DU BEBE "3,P$ 

?7@ INPUT'ET IL EST NE QUAND CE PETIT " 


:D$ 

80 CLS 

30 L=3 

100 T$="M, et Mme "+N$ 

119 GOSUB 248 

128 T$-"ont la joie de Vous annoncer" 
13Q@ GOSUB 210 

149 T$='"la naissance de leur bebe" 
150 GOSUB 210 

160 T$-P$ 

17Q GOSUB 248 

180 T$='"le "+D$ 

130 GOSUB 218 

208 END 

295 REM---------——— 

218 PLOT 2,i,7T$ 

220 L=L+] 

230 RETURN 

235 REM------—— 

248 L=2XCINT(L/2))+1 





PLOT 2,L, CHR$(I1D)+T$ 

PLOT 2,L+1,CHR$CIR)+TS$ 
LeL+2 
RE TURN 












Deux lignes sur 
l'imprimante qui 
recopie la mémoire 
sans plus. 


JE VAIS VOUS FAIRE UN JOLI FAIRE-PART 
DE NAISSANCE SI UOUS CONSENTEZ À 
REPONDRE À TROIS PETITES QUESTIONS 

NOM DES HEUREUX PARENTS ? RAUIS 

PRENOM DU BEBE ? DESIRE 

ET IL EST NE QUAND CE PETIT ? 31 DECEN 
BRE, 1599 





REMARQUES 
20 à 40 — le mode d’emploi 
30 à 70 — introduction des trois informations 


90 — L fixe le début du faire-part : ligne 3 (à par- 
tir du zéro) 


100 — texte de la première ligne 


110 — utilisation du sous-programme double 
hauteur 


120 et 130 — 2° ligne : simple hauteur 
140 et 150 — idem pour la 3° ligne 
160 et 170 — le prénom en gros 

180 et 190 — la date en plus petit 


200 — fin du programme, les sous-programmes 
vont suivre 


210 à 230 — sous-programme simple hauteur 
210 — affichage d’une ligne 

220 — position de la ligne suivante 

240 à 280 — sous-programme double hauteur 
240 — position du haut du texte : nombre impair 
250 et 260 — le texte sur deux lignes 


270 — position de la ligne suivante 
































M.et Mme RAVIS 


M, et Mme RAUIS 
M, et Mme RAUIS 
ont la joie de Vous annoncer 
La naissance de leur bebe 
DESIRE 

DESIRE 

ie 31 DECEMBRE 1999 































Une ligne en 
double hauteur 
sur l'écran 






Un exemple ? Toute ressemblance avec des bébés étant réellement nés 
serait purement fortuite ! 


CHAPITRE VII 


DESSINS EN HAUTE RÉSOLUTION 


Après la basse résolution, voici la haute résolution, celle qui vous permettra les tra- 
cés les plus fins. Au cours de ce chapitre, on examinera quelques autres ordres 
Basic relatifs aux boucles, afin de terminer sur un festival de tracés et de couleurs. 


Principaux thèmes abordés 


Haute résolution 

HIRES 

TEXT 

Ecran haute résolution 
Points d’affichage 
CURSET 

CURMOV 

CIRCLE 

DRAW 

PATTERN 

Cercles à géométrie variable 
CHAR 

POINT 

FILL 

Lignes de couleurs aléatoires 
REPEAT UNTIL 


IF... THEN 

ELSE 

IF... THEN... ELSE 
Branchement conditionnel 
Branchement inconditionnel 
Opérateurs relationnels 
AND 

OR 

NOT 

Lecture d’une touche 

KEY$ 

Attributs 

Clignotement 

Lignes doublées 

CTRL/D 

Caractères en double hauteur 





HAUTE RESOLUTION 





1. Placement du curseur 


Nous allons abandonner la basse résolution (« LORES » vient de « /ow resolu- 
tion », basse résolution) pour passer à la haute résolution, ce qui se dit en langage 
oricien HIRES, de « high resolution ». Frappez donc, en mode direct : 


| HIRES 


Puis, faites un RETURN. L'écran noircit mais tout en bas subsistent trois lignes 
blanches. 


Les trois lignes blanches inférieures sont 
destinées au texte, à vos ordres. Le reste de 
l’écran appartient au graphique. 


Lorsque vous êtes en mode HIRES, la frappe de CTRL/L ne vous ramène pas au 
mode texte : elle efface uniquement les trois lignes du bas. 


134 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Pour revenir au mode texte, frappez 
TEXT simplement TEXT en mode direct, puis 
RETURN. 


Vous pourriez passer aux modes graphiques basse résolution en frappant LORES 6 
ou LORES 1. 


ECRAN Bien, mais que représente maintenant l’écran graphique ? En basse résolution, 
HAUTE RESOLUTION 


rappelez-vous, on l’a quadrillé selon une grille de 39 colonnes sur 27 rangées, soit 
1 953 positions au total. En mode haute résolution, la « définition » est bien supé- 
rieure car on dispose alors de 249 colonnes (numérotées de 9 à 239) et de 299 ran- 
gées (numérotées de 9 à 199), soit un total de 48 999 positions : reportez-vous à 
notre « grille », dessinée ici. Chaque position peut être assimilée à un point, tant 
elle est petite. 


POINTS D’'AFFICHAGE 









HE) 


Colonnes 


Position 


239,0 
KE 












Position 
239,199] 






Trois lignes 
de texte 
en plus 








Cana blanc 


La grille haute résolution. 


DESSINS EN HAUTE RÉSOLUTION 135 





CURSET 


Il nous faut d’abord faire apparaître le 
curseur. Pour cela, on va le placer avec l’ordre 
CURSET, ce mot provenant de « cursor set », 
positionnement du curseur. 


CURSET doit être suivi de trois valeurs, selon la syntaxe : 


Ce, paramètre 


rangée,nombre FD 







{ras 
obligatoires ! 


CURSET colonne, 


Ce nombre est dit FD pour fond/devant, le fond étant tout simplement la couleur 
du fond (de la page) et le devant, la couleur de l’encre (de l’écriture). Les codes sont 
les suivants : 





RE 
dire qu’on efface, alors) 
RE 77 HS 









Semble ne rien faire car n’affiche rien, 
mais met la position « colonne,rangée » 
en mémoire 





Le plus évident consiste à expérimenter. Le « point » central de l’écran a pour 
coordonnées 129,19. On va y mettre le curseur ; passez d’abord en mode HIRES, 
si ce n’est déjà fait, puis frappez ce texte qui viendra dans la fenêtre de texte de 3 
lignes : 







Peur «respecter» la couleur de 
«l'encre» : du blanc 


N'oubliez pas 
les virgules 










Ready. 
CURSET 129 


136 


CURMOV 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Au RETURN, un tout petit point blanc (couleur de « l’encre »), c’est le curseur, 
s’affiche au centre de l’écran. Maintenant, faites : 












Pour une inversion 
de couleur 





Ready 
CURSET 129,190 ,2 






Au RETURN et avec le 2 qui inverse la couleur, on place un curseur noir en 
129,199 ce qui revient à « éteindre » le curseur précédent. Rallumez-le avec un 
CURSET 129,190,1 puis commandez : 


«Ne rien faire sur l'écran» 


Ready 
CURSET 120,100,3 





Au RETURN, rien ne se passe, sur l'écran ; en fait, le Basic s’est borné à mettre 
l’ordre en mémoire. Si une instruction suivante se réfère au curseur, et bien que 
celui-ci soit invisible, sa position sera prise en compte. Par contre, avec : 


Passons à la couleur 


Ready du fond 
CURSET 120,100,0 





et au RETURN, on affiche un curseur de la couleur du fond, ce qui revient à 
« éteindre » notre point blanc. 

Jusqu’à présent, on a donné les coordonnées exactes de la position du curseur 
(129,199) ; c’est ce qu’on appelle des valeurs absolues. Or, on peut très bien dépla- 
cer le curseur en se référant à sa position précédente ; par exemple, on va le dépla- 
cer de 59 positions à droite et de 29 positions plus bas. Sa position absolue sera 
donc de 129 + 59= 179 et de 199 +29 = 129, mais grâce à l’ordre CURMOV (de 
« cursor move », déplacement du curseur) il suffira de donner des indications re/a- 
tives selon la même syntaxe : 





Ce sont des valeurs 


«relatives» 
Ready 


CURMOV 59,20 ,1 


Au RETURN, un second point s’affiche en 179,129. 


Nous avons bien dit « un second ». Chaque 
nouvel ordre CURSET ou CURMOW place 
un nouveau point, qu’on appelle « curseur » 
dans la mesure où on se réfère à lui pour 
l’opération suivante. 


CURMOV accepte des valeurs négatives, pour des « marches arrières » : 












Déplacement à partir de 
la position précédente 
qui était 170, 120 







Ready 
CURMOV -190,-509 ,1 


Au RETURN, un nouveau point s’allume en 179 — 199 = 79 et 129 — 59 = 79, ce qui 
correspond à la commande CURSET 79,79,1. 


DESSINS EN HAUTE RÉSOLUTION 137 





2. Tracés 


La haute résolution dispose de commandes de tracés très efficaces ; par exemple, 
on peut tracer une circonférence avec une seule instruction CIRCLE. Nous allons 
vous montrez la série d’ordre à introduire à la file, mais rappelez-vous que vous 
n’en verrez qu’un à la fois sur l’affichage inférieur. Commencez par faire HIRES. 


Même si vous êtes déjà en mode « haute 
résolution », HIRES servira à effacer l’écran. 


Puis, placez un curseur « invisible » au centre, en 129,199, grâce au troisième chif- 
fre « 3 », comme on l’a vu. Enfin, faites CIRCLE en donnant le rayon et le « FD » 
comme d’habitude : 






he effacer l'écran 











Positionnement d’un 


HIRES curseur 
CURSET 1290,100,3 invisible 
CIRCLE 80,1 


Tracé d'une conférence 
de rayon = 80 





Au RETURN, une circonférence de rayon 89 s’inscrit autour du curseur fictif, au 


centre de l’écran. Notez la syntaxe de CIRCLE : 
CIRCLE 







En nombre de 
points de l’image 


CIRCLE rayon,nombre FD 


Notez qu’au lieu de CURSET 129,199,3 vous auriez pu aussi bien écrire CURSET 
129,199,9 avec le même résultat ici. 


Pour tirer un trait, employez DRAW (« tracez », en anglais) ; DRAW trace un 


trait à partir de la position du curseur et en se servant de valeurs relatives pour 
savoir jusqu'où, selon la syntaxe : 


Mettez un 


















1 pour 
En nombre de ni nombre voir quelque 
e lignes 
colonnes chose ! 


DRAVW déplacement horizontal, déplacement vertical,nombre FD 


Supposons que votre curseur se trouve toujours en 129,199 ; sinon, remettez-le à 
cette place. 


La commande CIRCLE ne déplace pas le 
curseur. Par contre, DRAW le déplace et 
l’amène au bout du nouveau trait tiré. 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 












«De 60 vers 


CE Ilez de 30 vers la rs 
droite …» e Das) 










Et tracer un trait reliant ce nouveau 
point au curseur 
—— 





Au RETURN, un trait oblique partant du centre de votre circonférence va s’ins- 
crire, tel la grande aiguille d’une montre pointant 25 minutes. 


Attention : maintenant, le curseur est au bout 
de votre trait, donc en 129 + 39 = 159 et en 
199 + 68 = 169, donc en 159,168. 


Vérifions-le en traçant un carré, à partir de 159,169, donc ; notre carré va s’accro- 
cher au bout de l’aiguille de montre : 





Côté horizontal 







DRAW 5 
DRAW 9 
9 


Côté vertical, 
à droite 










DRAW 
DRAW 1 
he it Su EN Côté horizontal inférieur, ) __ __ _ 


Côté vertical de gauche, 
vers le haut 






Sur l’écran, vous avez maintenant ceci : 












CURSET ES 
120, 100, 3 ’ 
curseur 






invisible 





DRAW 30, 60,1 








Le tout en 
blanc sur fond 
noir 










Et notre 
carré 






DESSINS EN HAUTE RÉSOLUTION 139 





PATTERN 


DE on trace des tirets réguliers sur 
100 points 










Pour 
réduire 


CERCLES 
A GEOMETRIE 


VARIABLE 





Appréciez la facilité des tracés et leur finesse ! Mais ce n’est pas tout : DRAVW trace 
des traits continus mais, grâce à PATTERN, vous allez pouvoir tirer des traits dis- 
continus. Il suffit de faire suivre PATTERN d’un nombre compris entre Ÿ et 255. 


Pourquoi ces valeurs ? Si vous connaissez le 
binaire, vous savez que, sur 1 octet, on peut 
coder de # à 255. La structure du mot binaire 
(ses # et ses 1) définit l’aspect du trait 

à obtenir. 


Mais sans connaître le binaire, faites quelques essais au hasard, ou plutôt, com- 
mencez par des pointillés réguliers avec PATTERN 15 ; la séquence est la sui- 
vante : 







Pour effacer l'écran 









HIRES 
CURSET 29,100,3 
PATTERN 15 
DRAW 190,9 ,1 


Plaçons le curseur invisible 
en 20, 100 












On définit la structure 
du tireté … 


Essayons maintenant un programme qui va tracer un cercle de rayon s’accroissant 
continâment, puis décroissant jusqu’à disparaître, puis re-grandissant à nouveau, 
etc. Pour cela, on va rédiger les instructions en mode texte. Pour revenir à ce mode, 
frappez simplement TEXT, puis RETURN ; et entrez : 












TEXT - Cureurnésble D 

19 HIRES DT 

29 CURSET 129,109 ,3 ASS 

30 FOR N=1 TO 80 Pour ouvrir et étaler 
49 CIRCLE N,1 | le cercle 

59 NEXT N 

69 FOR N=89 TO 1 STEP -1 

79 CIRCLE N,9 

80 TN 

99 


Ici, il faut effacer ; donc 
le nombre FD est 0 










On recommence 


Faites RUN : l’écran passe en mode HIRES et notre cercle se forme, grandit 
jusqu’à 89, puis commence à diminuer, etc. C’est parce qu’il faut effacer que, pour 
le réduire, on a mis CIRCLE N,9 à la ligne 79. Arrêtez cela avec CTRL/C. 
Essayons, maintenant, d’en faire autant avec des circonférences et non plus des cer- 
cles (la circonférence est le périmètre d’un cercle ; un cercle est une surface !). Pour 
cela, il faut effacer le cercle précédent après avoir affiché le suivant. Le programme 
est sensiblement le même que ci-dessus ; on a ajouté deux lignes d’effacement, en 
45 et 75, et modifié les lignes 39 et 69 (bien que la modification de 69 soit totale- 
ment inutile : on aurait effacé une ligne inexistante, et après ? Mais c’est pour le 
principe) ; ces modifications sont dûes au fait que le Basic refuse de tracer un cercle 
de rayon ÿ et considère que c’est une erreur ; il ne faut donc pas qu’un calcul de 
rayon donne zéro. Voici ce programme : 


140 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





POINT 





Pour effacer, en mode 
croissant, le cercle 













en précédent : (N — 1) 
19 HIRES 

29 CURSET 120,10 

30 FOR N=2 TO 80 

40 CIRCLE N,1 

45 CIRCLE N-1,09 

59 NEXT N 

60 FOR N=79 TO 1 STEP -1 

79 CIRCLE N,1 

75 CIRCLE N+1,0 

$ : NÉS à 0 Pour effacer, en mode 





décroissant : donc le cercle précédent 
était plus grand (N + 1) 






Lancez-le, puis imaginez-en de plus savants. Par exemple, introduisez en 25 un : 


Au RUN, vos cercles seront faits de points. Avec les grands rayons, vous voyez net- 
tement un nouveau cercle se créer puis le précédent s’effacer. 


Sachez encore que vous pouvez aussi placer des caractères en HIRES, à l’emplace- 
ment du curseur, avec l’ordre CHAR (pour « character », mot anglais), mais sans 
le suffixe dollars, ici, (ce n’est pas un nom de variable chaîne !). La syntaxe est : 


PE. 


0 pour standard 
ou 1 pour 


caractère 
( graphique 


CHAR code ASCIL,standard ou graphique,nombre FD 


















C'est le code ASCII 
du caractère, 
de 32 à 127 






Comme 
précédemment 










C’est facile à essayer. Faites CTRL/C si vos cercles sont toujours en évolution, 


puis : 
* Pour effacer l‘écran 





Pour afficher le caractère standard 
de code 83 






Au dernier RETURN, le caractère de code 83, toujours unS, se place au centre de 
l’écran. 


Enfin, vous pouvez demander au Basic de quelle « couleur » (fond ou encre) est un 
point quelconque, précisément avec l’ordre POINT. Il vous répondra par le nom- 
bre FD et donc par 4 pour fond, mais par — 1 pour encre ; encore faudra-t-il que 
vous reveniez en mode TEXT pour pouvoir lire la réponse. Cela donnera : 


DESSINS EN HAUTE RÉSOLUTION 141 
On fait: 
encre = 1 
HIRES 


CURSET 129,190 ,1 


TEXT 
PRINT POINT(129,100) 
1 













Retour au mode 

texte, pour 
pouvoir lire 
la réponse 







Interrogation et... 








. Réponse : 1 (et même“) 
car c'était bien «encre» 


3. Couleurs en HIRES 


Mettre de la couleur en HIRES est un peu plus subtil. Notons, tout d’abord, que 


FILL l’ordre est FILL (pour « remplir »), et qu’il doit être suivi par 3 paramètres : 


On travaille 
par «paquet» 



















Attention :il y a 
200 lignes 










Comme de coutume : 





mais vous devez donner ici de 6 colonnes : 

le nombre de lignes à lyena on ee “ À 
remplir à partir de la donc 240/6 = base GOûr 
position du curseur 40 


le «fond» 


FILL nombre de lignes,nombre de blocs de colonnes,couleur 


Ne vous préoccupez pas du second paramètre, pour l’instant, fixé à 1, et frappez : 


CPour 1 ligne 


D es Ce PP ne mon 5 Couleur : 
rouge 














Au RETURN, la ligne supérieure de l’écran passe en rouge. Pourquoi elle et elle 
seule ? Puisqu’on n’a pas indiqué de CURSET pour positionner le curseur, celui-ci 
s’est mis d’office en 9,0 ; d’autre part, le premier paramètre est 1, donc une seule 
ligne s’est teintée. Si vous faites maintenant : 





Vous allez colorier en vert les 8 lignes suivantes. 


Dès lors que vous mettez des lignes en 
couleur, le curseur se déplace de lui-même et 
passe à la ligne suivante. 


142 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Essayez de placer le curseur au début d’une ligne, par exemple la ligne 199, avec la 
position 9,199, pour placer du cyan (couleur 227) : 






Le curseur est 
visible 


CURSET 9,100 ,1 
FILL 15,1,22 


ds 





Au RETURN, 15 lignes se colorent en cyan (bleu-vert) à partir de la ligne 199. 
Bien, essayons, maintenant, de démarrer sur une colonne à mi-course : 


» 1 





Au RETURN, 3 lignes jaunes démarrent à partir de la colonne 128. Si vous refaites 
ensuite un : 


7 lignes en bleu vont se placer en-dessous, toujours à partir de la colonne 126. 


Notez bien que c’est le curseur qui donne la 
position de la colonne de départ, pour FILL. 


Pour illustrer un peu les possibilités de couleurs de l’Oric, et faire une pause, entrez 
et exécutez ce programme qui remplit de couleurs aléatoires toutes les lignes, de 9 à 
LIGNES DE 199. Il n’est pas nécessaire de positionner le curseur au départ puisqu'il se place 
COULEURS :,tomatiquement en 9,9 et que chaque ligne teintée le fait avancer d’une ligne : 


ALEATOIRES 


200 lignes 







Choix aléatoire de 
la couleur — — — 





Faites RUN et vous obtiendrez une belle palette de lignes successives se suivant 
dans des couleurs placées au hasard. 

Passons maintenant au paramètre bloc de colonnes : il agit par « paquets » de 6 
colonnes d’un coup ; chaque ligne de 249 colonnes comporte donc 49 « paquets ». 


Attention : ce paramètre ne fonctionne pas 
avec les couleurs ! Si vous le spécifiez, que ce 
soit de 1 à 4, c’est toujours toute la ligne qui 
va se colorier. 


Par contre, il fonctionne avec des caractères spéciaux où le n° 63 représente un 
pavé blanc. Essayez : 


DESSINS EN HAUTE RÉSOLUTION 143 










1 fois 6 colonnes 


6,1,63 C'est du blanc, 
dans ce mode 






Au RETURN, un pavé blanc de 6 lignes sur 6 colonnes (1 « bloc ») se place à partir 
de 9,9. Le curseur passe à la ligne suivante ; frappez alors, ce qui suit : 










3 fois 6 colonnes 





Tout ceci est 
réellement en 

blanc sur 

fond noir ! 


FILL 6,6,63 


Au lieu de 63, vous pouvez placer d’autres codes. Par exemple, le code 45 vous 
donnera des verticales parallèles (FILL 9,12,45 par exemple), mais à l’évidence, 
c’est le code 63 qui sera le plus utile aux débutants. 

Pour créer une surface en couleur, on va mettre toute la bande voulue en couleur, 
puis effacer (avec du noir) l’excédent. Par exemple, pour un rectangle : 












On crée une bande en cyan 
à partir de la colonne 40 


Et on efface avec du 
noir, à partir de la 
colonne 80 







Vous pouvez combiner des quantités de choses, maintenant, en HIRES, mais nous 
devons encore évoquer le 3° paramètre de FILL qui ne sert pas uniquement pour la 
couleur. Nous allons cependant, en « intermède », vous présenter quelques autres 
ordres importants du Basic « classique » qui vont nous servir. Pour cela, on va 
revenir au mode texte ; frappez donc TEXT, puis NEW. 


4. Répétitions 


On tire des nombres aléatoires entre Ÿ et 9 ; dès que l’on a tiré un as (un 1), on veut 
que le programme cesse. Comment réaliser cela ? Tout simplement en indiquant : 
répéter jusqu’à ce que le nombre soit un as. Le mot répéter s’écrit REPEAT, en 
anglais, alots que jusqu'à se dit UNTIL : 


144 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





«Répétez...» 


REPEAT 
UNTIL 


IF... THEN 






Ligne 45 
«GOTO 20» 








(Tirage d'un nombre aléatoire 









AT p 

T(RND(9)*10) « Jusqu'à ce 
queN=1» 

L N=1 

RAVO, VOUS ETES UN AS !” 


La ligne 19 REPEAT ordonne la répétition de toute la séquence incluse jusqu’à la 
ligne UNTIL (la ligne 49, ici), tant que N ne sort pas à 1. Donc, tant que N n’est pas 
1, on va revenir de 4ÿ à 19. Dès que N = 1, la boucle est terminée et le Basic passe en 
59. Voici ce que donnerait un RUN : 











RUN 

9 

Ê On a tiré enfin 

3 un 1 

9 

1 

BRAVO, VOUS ETES UN AS ! 


Il existe une autre façon de procéder, qui consiste à écrire « si N= 1, alors écrire 
Bravo, vous êtes un as ! ». Le mot si se dit IF, alors se dit then ; c’est un peu plus 
compliqué ; commencez par supprimer la ligne 19 et conservez 29,30 et 59 ; puis, 
frappez 49 et 45, ce qui donne pour le programme complet : 











_ Si N = 1, alors 
2 N=INT(RND(9)x*x1 / 
+ ANT N Van dé allez à 50... 
40 IF N=1 THEN GOTO 59 
45 GOTO 20 
59 PRINT "BRAVO, VOUS ETES UN AS ! 


Ici, la ligne 49 renvoie en 59 à la condition que N=1 ; sinon, le renvoi est ignoré, et 
le Basic passe à l’instruction suivante qui est 45, avec le renvoi au début. Voici 
l’organigramme de ce programme : 





Tirage du nombre 













aléatoire N Ligne 20 
Affichage de N Ligne 30 
Ligne 40 

Affichage du message final Ligne 50 


Organigramme de la 
boucle IF... THEN 


DESSINS EN HAUTE RÉSOLUTION 145 





ELSE 


BRANCHEMENT 
CONDITIONNEL, 


INCONDITIONNEL 





OPERATEURS 


RELATIONNELS 





NOT 


Faites un RUN : le résultat est rigoureusement le même. Notons que, dans la ligne 
49, on peut se permettre d’écrire tout simplement : 


Le «GOTO» est implicite 


Bien mieux, on peut cumuler les lignes 49 et 45 en ajoutant, en 49, une option sup- 
plémentaire : « Si N = 1 alors 5ÿ, mais sinon aller en 29 ». Sachant que sinon s’écrit 
en anglais ELSE, le programme complet devient : 






Si N = 1, on va en 50, sinon, 
on passe en 20 


29 N=INT(RND(9)x10) 

30 PRINT N 

49 IF N=1 THEN 59 ELSE 29 

59 PRINT "BRAVO, VOUS ETES UN AS!" 


Un RUN donnera rigoureusement le même résultat. 


L'ordre IF... THEN est appelé un 

« branchement conditionnel », ce qui semble 
évident : le branchement ne se fait que si la 
condition est remplie. 

Par opposition, GOTO est appelé un 

« branchement inconditionnel ». 


Dans ces programmes, la condition était l’égalité, avec N=1. Mais il peut y en 
avoir d’autres, qui s’inspirent de l’arithmétique classique ou de la logique ; si vous 
les avez étudiées, ils n’offriront pas de mystère pour vous. En voici la liste : 


OPERATEURS RELATIONNELS 


Notation Basic Signification Notation classique 


Egal 
Plus petit que 
Plus grand que 


Plus grand ou égal 
Plus petit ou égal 
Différent de 






ET logique 
OÙ logique 
Négation logique 


146 


LECTURE 
D'UNE TOUCHE 









Dés que 
vous avez 
frappé 
sur le 

Z 












PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


5. Lecture d’une touche avec KEY$ 


L’ordre KEY$ (ce mot provient de « key », touche), ordonne au Basic de lire le cla- 
vier, au cours de l’exécution d’un programme ; celui-ci « ramène » le caractère cor- 
respondant à une touche précisément frappée à cet instant, sous forme d’une 
chaîne d’un seul caractère d’ailleurs. C’est ce qui explique la présence du symbole 
« dollar » au bout du mot key. La suite dépendra de ce que vous avez prévu. 
Dans le programme suivant on demande, par exemple, si la touche frappée est un Z 
et si oui, on affiche MERCI. Si non, on renvoie à ce même ordre de lecture du cla- 
vier avec KEY$, ce qui donne : 


19 PRINT "FRAPPEZ SUR LE Z" 
20 IF KEY$="Z" THEN PRINT "MERCI" 
39 GOTO 29 








«Lis le clavier : si la touche frappée est le 
Z, écris MERCI» 






La ligne 19 affiche le message : Frappez sur le Z. A la ligne 29, on ordonne au Basic 
de lire sur le clavier (KEY$), ce qu’il fait ; s’il lit un Z, il affiche MERCI. Sinon, 
comme dans tout ordre IF... THEN, il passe à la ligne suivante qui le renvoie en 2ÿ 
pour poursuivre la lecture du clavier. Au RUN, vous aurez : 


Si vous frappez sur le Z, le mot MERCI s'affiche. Mais ensuite, le programme con- 
tinue d’attendre, et à chaque frappe du Z, il ré-affichera un nouveau MERCI. Afin 
de ne tenir compte que de la première frappe du Z, il faut compléter la ligne 29 avec 
un END, ce qui signifie que dès que l’on affiche un MERCI, le programme prend 
fin ; ce qui donne : 


RINT “"FRAPPEZ SUR LE Z" 
Us KEY$="Z" THEN PRINT "MERCI ":END 
) 








Rappelez-vous que le double-point ; 
est le séparateur officiel 


Notez bien ce point essentiel : le Basic va lire 
le clavier à l’instant où il rencontre l’ordre 
KEY$. II ramène le caractère (la chaîne de 
un caractère, plus exactement) correspondant 
à la touche qui est justement frappée à cet 
instant. Si aucune touche n’est frappée, il 
ramène une chaîne vide, (donc ”” ”’). 


Voici un petit programme appliquant KEY$. Entrez-le, mais en le lisant, essayez de 
deviner ce qu’il va produire ; si vous ne trouvez pas, exécutez-le, et lisez la suite : 


ATTRIBUTS 


DESSINS EN HAUTE RÉSOLUTION 147 







Po ur effacer l’écran 






C’est une chaîne vide : il 
n'y a rien dans les guillemets 











19 CLS 

29 IF KEY$="" T 9 
39 PLOT 18,12, "AIE" 
49 WAIT 

59 GOTO 19 





PLOT : rappelez-vous, c'est 
pour afficher à une position 
imposée, ici colonne 18 
et ligne 12 







Au RUN, l'écran s’efface. Si vous frappez une touche, un « AIE » s’affiche un ins- 
tant (WAIT 59) au centre de l’écran ! Faites CTRL/C pour stopper ce programme. 
Que s’est-il passé ? A la ligne 29, on commande la lecture du clavier avec KEY$ ; le 
Basic ne lit rien tant qu’une touche n’est pas frappée, ce qui correspond à une 
chaîne vide. Dans ce cas, la ligne 29 se renvoie à elle-même et le Basic va continuer à 
surveiller le clavier. Dès qu’une touche est frappée, la condition posée par le IF 
n’est plus remplie et dans ce cas, le THEN n’est pas exécuté : le Basic passe à la 
ligne suivante, qui commande l'affichage de AIE au centre de l’écran, puis on 
attend 9,5 seconde (ligne 49), et enfin on revient en 19 pour effacer l’écran et 
recommencer. 

6. Les attributs 

Après cette escapade, nous pouvons revenir à l’ordre FILL pour examiner son troi- 


sième paramètre qui fixe la couleur, ou d’autres attributs. Ce paramètre va de ÿ à 
127 inclus ; voici ses groupes d’actions : 


24 à 31 inclus Agit sur la « fréquence de balayage » 
de l’image : ne vous en servez pas ! 
32 à 127 inclus Sert à la définition de motifs graphiques 


Dans ce tableau, la ligne « obscure » est celle des valeurs de 8 à 15. Les fonctions 
sont les suivantes : 


Caractères alphanumériques du clavier standard 
Caractères graphiques (rappelez-vous du mode LORES 1) 
Caractères standards, doublés (sur 2 lignes) 
Caractères graphiques, doublés (sur 2 lignes) 

12 Clignotement, caractères alphanumériques 

13 Clignotement, mais caractères graphiques 

14 Clignotement alphanumérique, doublé (2 lignes) 

15 Clignotement graphique, doublé (2 lignes) 

















148 


CLIGNOTEMENT 


LIGNES DOUBLEES 


CTRL/D 


CARACTERES 
EN DOUBLE 
HAUTEUR 












Calcul de 
l'attribut 


Placement 
du 


PRATIQUE DE L’'ORIC 1 ET 36 PROGRAMMES 


Les deux nouveautés résident dans le clignotement et les caractères doublés, car on 
a déjà examiné le reste. Commençons par le clignotement : on va placer un cercle et 
le faire clignoter : 










Création du cercle, 
comme on l'a déjà vu) __ — 







On ramène le curseur 
en haut et à gauche … 













. Et on fait 
clignoter tout 
l'écran (sur 199 lignes) 


Vous pouvez mettre 
ici 12 ou 13 












Le second placement du curseur a été fait en 9,9 mais en réalité, il suffisait de le 
situer de façon qu’il englobe le cercle. Essayez d’autres valeurs, en modifiant 
ensuite le nombre de lignes à balayer (moins de 199, selon ce qu’il reste à partir du 
curseur). 


Pour examiner les caractères doublés, or va procéder autrement : vous les obtien- 
drez soit avec le suffixe 19 ou 11, comme le montre le tableau ci-dessus, soit en 
frappant au clavier CTRL/D. Frappez CTRL/D puis, pour expérimenter, frappez 
FRERE JACQUES, ce qui donnera : 

PTT 


La ligne a été 
doublée 











FRERE JACQUES 
FRERE JACQUES 


Refaites CTRL/D pour revenir au mode normal. En fait, ce doublage de ligne 
n’offre un réel intérêt que pour doubler des caractères de hauteur, soit en définis- 
sant des caractères spéciaux (ce que l’Oric vous permet, mais on ne vous entraînera 
pas jusque-là dans ce livre), soit à l’aide des caractères graphiques ou des comman- 
des graphiques. 


Exploiter tous ces ordres reste encore assez subtil, et ne peut venir que de l’expé- 
rience car, malheureusement, nous ne pouvons vous en montrer ici toutes les com- 
binaisons. À moins de vous proposer un programme qui en mêle aléatoirement plu- 
sieurs : on va employer FILL pour remplir des rangées (de nombre aléatoire) avec 
un code — suffixe aléatoire qui pourra fournir de la couleur, du clignotement, des 
motifs graphiques. Ce programme offre, en outre, l’avantage d’incorporer un IF... 
THEN et un REPEAT UNTIL. Vous trouverez à la suite quelques explications 
nécessaires : 









10 HIRES 

29 REPEAT 

E+ A=RND(9)*x128 

40 IF A>23 AND A<32 THEN 309 . 
CSS C=RND(9)x240 Remplissage 
60 R=RND(9)+x100 en fonction 
79 CURSET C,R,3 de À 

80 FILL RND(9}* 

90 UNTIL KEY$ 


DESSINS EN HAUTE RÉSOLUTION 149 


La ligne 29 ordonne la répétition de toute la séquence allant jusqu’à 99. Le UNTIL 
KEY$<> " “ signifie jusqu'à ce qu’une touche soit frappée ! Décomposons : 
<> signifie différent de, et ” " est une chaîne vide ; or, dès qu’une touche est 
frappée, elle se traduit par un caractère que sera « A », ou « B », ou l’espace donc, 
une chaîne non vide ; donc, à ce moment, le programme stoppera. 


En 39, on calcule aléatoirement la valeur de l’attribut À, qui viendra au bout de 
FILL. Mais attention : si vous considérez notre tableau précédent, vous constaterez 
que les valeurs 24 à 31 sont interdites. Par conséquent, on cherchera, à la ligne 49, 
si À ne tombe pas dans cette gamme et si oui, on repart en 39 tirer une autre valeur. 
Le calcul se fait ainsi : Si À est supérieur à 23 mais aussi (c’est le ET logique, qui 
s’écrit AND) si À est inférieur à 32 (donc, s’il est compris entre 24 et 31), aller en 
30. 


Puis, en 59 et 69, on calcule aléatoirement le positionnement du curseur, colonne et 
rangée sans « sortir » de l’écran, ce que le Basic identifierait à une erreur, et l’on 
place ce curseur (invisible) en 79. Remarquez que les calculs de RND ne font pas 
appel à l’entier de la valeur obtenue : les fonctions utilisant ces valeurs s’en char- 
gent d’office. 


Enfin, en 89 on commande le FILL à partir, donc, d’un curseur placé aléatoire- 
ment, sur un nombre de rangées aléatoires (de 9 à 99, qui s’ajoutent donc à R cal- 
culé auparavant) et avec un paramètre A aléatoire. Il est difficile de faire davan- 
tage. 


Lancez ce programme : vous allez voir des plaques de couleurs s’afficher, des 
caractères graphiques apparaître en colonne surtout car le FILL est doté d’un 1 en 
second paramètre, des clignotements se manifester... Le jeu changera constam- 
ment, jusqu’à ce que vous frappiez sur une touche quelconque (résultat de la ligne 
99). L’image se figera alors, mais les clignotements se poursuivront. 


150 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


QUESTIONS SUR LE CHAPITRE VII 
Vous en connaissez maintenant le principe ! 


. Dans le mode haute résolution, la définition de l’écran est de : 
©] 299 rangées sur 24ÿ colonnes 
[] 24 rangées sur 89 colonnes 


. L'ordre CURSET sert à : 
O Tracer des traits en blanc sur fond noir 
[] Placer le curseur 


. CURMOV positionne le curseur : 
[ Selon des coordonnées absolues (colonne,rangée) 
Cl Par rapport à sa position antérieure 


. L'ordre CIRCLE doit être accompagné de paramètres précisant : 
CO son centre, son rayon, et l’inévitable nombre FD 
Ü] Sôn rayon et le nombre FD 


. DRAV' tire un trait entre : 

[] Deux points dont il faut donner les coordonnées en valeur absolue 

[1 La position actuelle du curseur et un point dont on donne les coordonnées en 
valeurs relatives à cette position 





. L'ordre FILL sert : 
D Uniquement à mettre de la couleur en HIRES 
[] À mettre de la couleur, mais aussi à exécuter d’autres commandes selon l’attribut 
(clignotement, motifs graphiques...) 


. REPEAT UNTIL ordonne : 
[La répétition d’une séquence tant que la condition posée n’est pas réalisée 
C Une temporisation 


. Si N=7, qu'affichera le programme suivant : 


59 IF N>8 THEN 79 
69 ? ’BONJOUR'’:END 
79 ? AU REVOIR’’:END 


[J] BONJOUR 
[ AU REVOIR 


. L'ordre KEY$, pour lire une touche : 
[1 Stoppe l’exécution du programme pour attendre la touche 
[] Lit ce qui est frappé à la volée, au moment où le Basic rencontre cet ordre, mais 
n’arrête pas le programme 





Réponses page 176 


DESSINS EN HAUTE RÉSOLUTION 151 


19 





CHRONOMÈTRE DIGITAL PRÉCIS 


STR$ VAL DEEK DOKE PEEK POKE 





Pour un chronométrage précis, pourquoi ne pas se servir de l’horloge 
qui cadence les opérations élémentaires de l’Oric ! 

Elle est contrôlée par un quartz et doit donc donner de bons résultats. 
Le moyen le plus facile pour l’utiliser est l’instruction WAIT et c’est ce que 
nous avons déjà fait. Mais pour afficher il faut au minimum une instruction 
PRINT, ce qui va fausser le chronométrage. Une autre méthode consiste à 
interroger un ou deux octets de mémoire vive qui sont liés à l’horloge. C’est 
ce que nous allons faire : 


1 — ’’Gratouiller”? les octets 630 et 631 pour fixer l’heure de départ. 
2 — Observer la variation du contenu de ces 2 octets. 
3 — Afficher ce contenu. 


De cette façon, on obtient directement un comptage à rebours au cen- 
tième de seconde, sur une durée maximum de 65 535 centièmes de secondes, 
soit près de 11 minutes. 


CLS REMARQUES 
INPUT'"'HEURE DE DEPART 1/1@0 S'" ;HD 


30 — point de départ du compte à rebours 


DOKE 630,HD 


T=DFEK(630) 40 — un instant parmi d’autres 
PLOT 10,3, STR$#(T) 50 — affichage 
GOTO 40 





Fournissez comme heure de départ, 1 000, ce qui représente 10 secon- 
des. On observe un défilement rapide des 2 chiffres de droite, et celui de 
gauche qui bat la seconde. Mais nous n’avons rien prévu pour arrêter le 
chrono, et ce qui se passe en-dessous de zéro peut surprendre ! 

Arrivé à zéro les deux octets reprennent chacun la valeur la plus grande : 
255, ce qui donne à notre compteur une nouvelle jeunesse : (255 x 256) +255 
soit 65 535. Et c’est reparti pour 655 secondes 35/100 ! 


Les chiffres s’affichent en vert, et pourtant on ne l’a pas demandé ! 

T est un nombre positif, et à la place du signe + se trouve un caractère 
invisible, dont le code est 2. 

Or c’est justement le code du vert comme couleur d’encre. 









HEURE DE DEPART 1/100 S? 1000 







(au bout de 
3 s 67/100 


D 


Nous avons employé deux fonctions aux noms barbares qui ne sont pas 
du Basic courant : DEEK et DOKE. 

Elles concernent toutes deux une paire d’octets voisins, DEEK pour lire 
et DOKE pour écrire. 


152 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





A la ligne 30 on met la valeur de HD, dans les octets 630 et 631. 
Si HD vaut 1 000, l’octet 631 recevra 3 et l’octet 630 : 232, car 
3x256+232=1 000. 


Puis grâce à DEEK (630) on lit ce qui se trouve dans ces 2 octets et le 
résultat est : (contenu de 631)+256 + (contenu de 630). 


Leur rôle est aussi de lire (PEEK) et d’écrire (POKE), mais un octet 
à la fois. PEEK (630) fournirait la partie basse du compteur et PEEK(631) 
la partie haute. POKE 630,0 ne remettrait à zéro que la partie basse de notre 
horloge 


Chronomètre digital avec arrêts provisoires et temps intermédiaire 











:DEPART 











“ARRET Le menu du 
:RATTRAPANTE prochain programme 
:REMISE À ZERO 






TI M NN D Ü 


:EIN 






Ce sont les 5 fonctions d’un chronomètre digital enrichi, avec affichage 
séparé des secondes et des centièmes. 


Ce programme comporte 5 boucles dans lesquelles on évolue grâce aux 


5 lettres DASZEF, et nous avons voulu construire ces boucles comme des blocs 
d'instruction dont voici la liste : 


Répéter 


jusqu’à ce qu’on frappe D 


Répéter 

















départ 
Le chrono tourne Répèter 
Répéter 

lecture et affichage du temps 

lecture du temps 

jusqu’à ce qu’on frappe A 
Redémarrage avec 
ou sans rattrapage Répéter 





lecture du clavier 
jusqu’à ce qu’on frappe D ou F ou S ou Z 


si on a frappé D, on repart où on s'était 
arrêté jusqu’à ce qu’on ait frappé 
autre chose que D et S 


Redémarrage à 
zéro 





jusqu’à ce qu’on ait frappé F 


Fin 


DESSINS EN HAUTE RÉSOLUTION 


153 








19 
28 
30 
4û 
50 
6@ 
20 
8a 
30 
11Q 
100 
119 
12a 
130 
148 
150 
168 
170 
180 
190 
2@û 
210 
220 
230 
240 
250 


CLS :PAPER 7 

PLOT2,4, "D:DEPART" 
PUOT2:55 AIARRET" 
PLOT2,6,"S:RATTRAPANTE" 
PLOT2,7,"2:REMISE À &ERO" 
PLOT2,8,"F:FIN" 

PLOT 1,2,17 

PLOT 10,2,23 
REPEATUNTIL KEY$="D" 
DOKE 639, 65535 

REPEAT 

DOKE 630,65535 

REPEAT 

REPEAT 

T=DEEK(630) 

T$=" MHSTRÉ(6S5S53S-T) 
LELENCTS) 
S$=MIDS(T$,L-4,3) 
CH=RIGHTSCT$,2) 

PLOT 2,2,S$ 

PLOT 5,2, ":"+C$ 
T=DEEK(630) 

UNTIL KEY$="A" 

REPEAT 
KF=KETS 
UNTIL K$="D" K$="S" 0 


OR K$="F" OR 


R Kg$="2" 


260 
27@ 
289 





THEN DOKE 630,7T 
AND K$>"S" 


JF K$="D" 
UNTIL K$O"D" 
UNTIL K$="F" 


REMARQUES 

20 à 60 — le mode d’emploi 
70 à 80 — un beau cadre rouge 
90 — attente : à *’D’’ on part 


100 à 280 — boucle pour des chronométrages suc- 
cessifs avec remise à zéro 


110 — remise à zéro 


120 à 270 — boucle pour redémarrage sans remise 
à zéro 


130 à 230 — boucles de chronométrage jusqu’à ce 
qu’on tape D 


140 — T : le contenu du ’’décompteur’”” 

150 — T$ : la chaîne contenant 65 535 —T pour 
compter à partir de zéro et non pas décompter, et 
3 espaces à gauche pour cadrer 

160 — la taille de T$ 

170 — les secondes 

180 — les centièmes 

190 — affichage des secondes 


200 — affichage d’un : et des centièmes 


210 — mise en mémoire du temps qui servira si on 
arrête le chrono (arrêt de jeu) 


230 à 250 — boucle d’attente jusqu’à ce qu’on 
relance le chrono avecw D, S, Z, ou F 


240 — observation du clavier : si une touche est 
frappée, son code va dans R$ 


260 — si on tapé D, on repart sans rattrapage 


L’emploi de la structure REPEAT... UNTIL a l'avantage de ne pas faire 
appel aux numéros de lignes comme le fait GOTO... 

Ceci est commode en particulier si on veut placer une portion de pro- 
gramme dans une autre, comme ce sera le cas si vous souhaitez réutiliser 
ce programme comme auxiliaire dans vos programmes nécessitant un 


chronométrage. 


154 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 











20 


CARACTÈRES ACCENTUÉS 


PEEK POKE READ DATA 





On peut redessiner n’importe quel caractère du clavier en respectant une 
convention fixée par le constructeur. Nous allons le faire pour combler une 
lacune : l’absence de caractères accentués. Il y a deux possibilités principa- 
les : modifier certains caractères standards ou toucher au jeu de caractères 
semi-graphiques. Laissons de côté ces graphiques carrés pour remplacer plutôt 
certains caractères du jeu standard peu employés dans un texte. 


Caractère Code Nouveau 
existant ASCII caractère 


64 
35 
94 
95 





19 CLS :PRINT :PRINT'CREATION DE CARACTE 

RES ACCENTUES" 

28 GOSUB 129 REMARQUES 

3@ PRINT:PRINT'"'UOICI LES CARACTERES OB 20 — appel du sous-programme 
TENUS :" de création 


4Q PRINT 50 à 70 — boucle d’affichage 
des caractères obtenus 


50 FOR C=1 TO 12 


60 PRINT CHR$CACC)I);" |"; 
78 NEXT C 


88 PRINT 


100 END 





DESSINS EN HAUTE RÉSOLUTION 


155 





118 
128 
130 
140 
125; 
158 
168 
170 
180 
190 
208 
21@ 
220 
230 
248 
250 
260 
270 
288 
230 
300 
310 
329 
330 
340 
350 
360 
370 


DIN AC12) 

DATA 64,35,94,95,124,92,91,93, 123, 
60,62 

FOR C=1 TO 12 

READ ACCI:NEXT C 


DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 
DATA 


16,8,28,2,39,34,30,0 
8,20,28,2,30,34,30,0 
4,8,28,34,60,32,30,0 
16,83,28,34,60,32,30,0 
8,20,28,34,60,32,30,0 
28,0,28,34,60,32,30,0 
8,20,0,24,8,8,28,9 
0,20,0,24,8,8,28,0 
8,29,28,34,34,34,28,0 
8,20,0,34,34,34,28,0 
16,8,0,34,34,34,28,0 
DATA 0,0,14,16,16,16,14,4 
FOR C=] TO 12 

FOR L=Q TO 7 

READ D 

POKE 46080+ACC)x8+L,0D 

NEXT L 

NEXT C 


RE TURN 


REMARQUES 


120 à 370 — sous-programme de création des nou- 
veaux caractères 


130 — réservation pour le fichier des codes 

140 — les codes des caractères à redessiner 

150 à 160 — boucle de lecture de ces codes 

180 à 290 — le ‘’dessin'’ des 12 caractères 

300 à 350 — boucle pour chaque caractère 

310 à 340 — boucle pour les 8 lignes d’un caractère 
320 — lecture pour une ligne 


330 — modification pour cette ligne 


L’exécution du programme donne ceci : 


CREATION DE CARACTERES ACCENTUES 


VOICI 


LES CARACTERES OBTENUS 





et à partir de maintenant si vous tapez @ c’est un à qui s’affiche, pour # 


vous obtiendrez 4... 


Ceci veut dire que vous pourrez créer, stocker, comparer et afficher du 
texte contenant ces 12 caractères greffés. 

Pour illustrer la démarche suivie, prenons le cas du caractère à que nous 
dessinerons en respectant la grille imposée de 8 lignes et 6 colonnes : 


156 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





16 


28 


Valeurs à 
mémoriser 


N° de 
li 
igne 30 


34 


30 





Ce dessin est mis en mémoire aux emplacements voulus grâce à 


POKE 46080 + A(C)+8,16 


POKE 46080 + A(C)+8 + 7,0 


on a choisi pour à le code 64 ; ce caractère sera donc obtenu grâce à la 
touche 
Ainsi pour écrire bérêt il faudra taper b A rit 
Si vous utilisez ceci avec des programmes où figurent des caractères modi- 
fiés, le nouveau symbole sera affiché, mais le code ASCII restant le même, 
Basic s’en moque : 
un <Ssera noté à mais correspondra bien à ’’inférieur à 
Pour revenir au jeu de caractères ’’normaux””, utilisez le bouton de réi- 
nitilisation ou tapez CALL 555. 


7.1 


DESSINS EN HAUTE RÉSOLUTION 157 








21 


LES CARACTÈRES SEMI-GRAPHIQUES À LA LOUPE 


HIRES  CURSET CHAR DRAW 





En fin d’ouvrage, on trouvera une liste des caractères du jeu alterné 
(numéro 1) dont le code est compris entre 32 et 95. Voici un programme 
qui affiche le caractère choisi et reproduit les points qui le compose dans 
une grille très agrandie formée de 8 cases dans le sens de la longueur et 6 
cases dans la largeur. 








Une grande case : 
un «point» en 
basse résolution 














Une petite case : }) 
un point en 
haute résolution 
















Les caractères obtenus seront composés de cases noires et blanches for- 


mant ce quadrillage : 


HIRES 

FOR *X=90 TO 126 STEP 6 
CURSET X,90,1:DRAUN 0,48,1 
NEXT X 

FOR Y=39 TO 138 STEP 6 
CURSET 9G,Y,1:DRAWN 36,0,1 
NEXT Y 


FOR CT=32 TO SS 

CURSET 10,10, 

CHAR CT,1,1 

PRINT"'CODE :":PRINT CT 


FOR Y=1@ TO 17 

FOR X=19 TO 15 
P=-POINT(X, Y) 

CURSET XX6+31,YX6+30,3 
CHAR 43,0,P 

NEXT X 

NEXT Y 


CURSET 18,10,3 
CHAR CT,1,2 
NEXT CT 


END 





REMARQUES 

20 à 70 — dessin de la grile 

20 à 40 — les barres verticales 

50 à 70 — puis les barres horizontales 

90 à 240 — boucle pour chaque caractère 

100, 110 — affichage du caractère en haut à gauche 
120 — son code est écrit dans les 3 lignes du bas 
140 à 200 — boucles de remplissage de la grille 
160 — P vaut 1 pour un point allumé, zéro sinon 
170, 180 — marquage d’une croix lorsque P vaut 1 
220, 230 — effaçage du caractère en haut à gauche 


avant de passer au suivant pour éviter une 
superposition 


158 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


exemple : voici la forme du caractère dont le code est 70. 


Le caractère graphique 
en grandeur nature 






Son agrandissement 


Passez-les systématiquement en revue (codes 32 à 95) et vous compren- 
drez mieux comment on passe d’un caractère au suivant. 

Au-delà de 95 le spectacle est moins varié : on retrouve par exemple le 
même caractère 16 fois de suite ! Puis la série recommence à partir de 160. 


DESSINS EN HAUTE RÉSOLUTION 159 











22 


CRÉATION DE MOTIFS 


HIRES  CURSET CHAR DRAW DEF FN 





Le clavier de l’Oric comporte les symboles usuels tels que lettres de l’al- 
phabet, chiffres et signes de ponctuation, mais on peut encore créer d’au- 
tres symboles qui occuperont la même place sur l’écran qu’une lettre ou un 
chiffre, et pourront être manipulés de la même façon. La création de tels 
motifs est décrite dans le manuel fourni avec le micro-ordinateur, et vous 
pouvez en trouver plusieurs exemples dans le présent ouvrage (graphisme, 
jeux d’animation..….). 


La démarche à suivre n’est pas très difficile, mais demande un soin atten- 
tif et une certaine habitude. Voici un programme qui vous facilitera le tra- 
vail : vous dessinez le motif souhaité en noircissant les cases d’une grille agran- 
die, et le résultat obtenu est une instruction DATA décrivant le motif. Au 
fur et à mesure que vous le dessinez sur la grile, le futur motif apparaît sur 
l’écran en grandeur nature. Ceci permet des retouches afin de parvenir à l’effet 
recherché. Il suffira ensuite de prévoir dans votre programme la lecture des 
informations contenues dans l’instruction DATA pour disposer du motif 
comme s’il avait toujours existé ! 


1Q HIRES 

20 FOR X-9@ TO 126 STEP 6 
30 CURSET *%,90,1:DRAW 0,48,1 
aQ NEXT x 

5Q FOR Y-90 TO 138 STEP 6 
60 CURSET 90,7Y,1:DRAW 36,0,1 
7Q@ NEXT Y 

80 : 

98 INPUT"'JEU" ;J 


REMARQUES 


10 à 70 — tracé de la grille 


100 
110 
120 
130 
140 
150 
160 
Lit 
170 
180 
1930 
200 
210 
220 


INPUT"CODE" CT 
CURSET 18,10,0 
CHAR CT,J,1 


FOR Y=1@ TO 17 

FOR X=1@ TO 15 

IF POINT(X,;Y)=-1 THEN CURSET XXx6+3 
X6+30,3:CHAR 43,0,1 

NEXT x 

NEXT Y 


DEF FNCCC)=CXx6+85 
DEF FNL(L)=LXx6+84 
L=l:C=1 





20 à 40 — boucle de tracé des traits verticaux 
50 à 70 — boucle de tracé des traits horizontaux 
90 — choix du jeu de caractères 0 ou 1 

100 — code ASCII du caractère à modifier 

110, 120 — affichage de ce caractère tel qu’il est 


140 à 180 — boucle d’analyse de caractère et repré- 
sentation avant agrandissement dans la grille 


160 — pour chaque point formant le caractère, on 
marque une croix (+) dans la case correspondante 


200 et 210 — définition des fonctions de position 
du curseur dans la grille 


220 — position de départ : en haut à gauche 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








REPEAT 
A=POINTCCrS,L+r9) 
CURSET FNCCC)I,FNLCL),3 
CHAR 43,G,-NOT A 

WAIT 5 

GOSUB 538 

CHAR 43,0, -A 

WAIT 5 

UNTIL T$=CHR$(13) 


DIN FC8) 
FOR L=1 TO 8 
F(L)=@ 
370 FOR C=1 TO 6 
380 F(L)=2XF(L)I-POINTC(C+9,L+9) 
39@ NEXT C 
a@@ NEXT L 
410 : 
420 TEXT 
43Q@ PRINT:PRINT'UOICI L?INSTRUCTION DA 
TA NECESSAIRE POUR OBTENIR LE MOTIF 


440 PRINT :PRINT"DATA ‘; 

45@ FOR L=1 TO 8 

468 PRINT FCL)3;","; 

479 POKE 460880+1824XJ+CTX8+L-1,FCL) 
480 NEXT L 

498 PRINT CHR$C8);" " 

508 PRINT:PRINT:PRINT"MOTIF OBTENU :"; 
510 IF J=Q THEN PRINT" "3;CHRS$SCCT)J ELSE 
PRINT CHR$C27) ;"I";CHRS$SCCT)J 

520 END 

530 : 

540 RENM 

550 T$=KEYT$ 

560 IF T$<>"" THEN CODE=ASC(TS$) ELSE R 
E TURN 

520 IF T$="Q" THEN CURSET C+9,L+9,@:CU 
RSET FNCCCI,FNLCL),3 

58Q IF T$="1" THEN CURSET C+9,L+9,1:CU 
RSET FNCCC), FNLCL),3 

590 IF CODE<8 OR CODE>11 THEN RETURN 
608 C=C+(CODE=8)-(CODE=S) 

610 L=L-CCODE=18)+CCODE=11) 

620@ IF C<I1 THEN 

630 IF C>6 THEN 

648 IF L<i THEN 

65Q IF L>8 THEN 

660 RETURN 





REMARQUES 


240 à 320 — répétition jusqu’à ce qu’on tape 
Preturn”” 


250 — mémorisation de l’état de la case allumée 
ou éteinte 


260 — on place le curseur dans la case (coin supé- 
rieur gauche) sans modifier ce qui s’y trouve 


270 à 310 — clignotement du signe + 
270 — effacement du + 
280 — temporisation 


290 — observation du clavier et modification d’une 
case : utilisation du sous-programme 


300 — affichage du + 
310 — temporisation 


340 à 400 — calcul des valeurs définissant le nou- 
veau motif 


340 — réservation pour le fichier des codes de cha- 
que ligne 


350 à 400 — boucle sur les lignes 


360 — remise à zéro de la valeur caractéristique 
d’une ligne 


370 à 390 — boucle sur les 6 cases d’une ligne 
380 — calcul progressif de la valeur 


420 à 510 — résultat : ce qu’il faut faire pour recréer 
le motif plus tard 


440 à 480 — écriture de l’instructin DATA et mise 
en mémoire des valeurs définissant le nouveau motif 


REMARQUES 


550 à 660 — sous-programme de déplacement dans 
la grille et de modification de celle-ci 


550 — mémorisation d’une frappe de touche 


560 — si on a appuyé sur une touche, CODE con- 
tient son code ASCII, sinon: fin du 
sous-programme 


570 — cas du zéro : effaçage du point dans le petit 
caractère et de la croix dans la grille 


580 — cas du 1 : allumage du point et d’une croix 


590 — fin du sous-programme pour les codes 
autres que ceux des 4 flèches 
600 — nouvelle position horizontale : c diminue de 


1 si on a tapé —, c augmente de 1 pour —, c ne 
change pas pour les 2 autres flèches 


610 — même démarche pour la nouvelle position 
verticale : ? L diminue de 1, * L augmente de 
1, sinon L ne change pas 


620 à 650 — blocage à gauche, à droite, en haut 
et en bas 


660 — fin du sous-programme 


DESSINS EN HAUTE RÉSOLUTION 161 











Exemple : 
Pour créer un coureur à pied à la place du motif €, il faut modifier 
le caractère 64 du jeu n° 0: 


Avant la 
modification 


JEU? @ 
CODE? 91 





Le crochet apparaît alors en haut à gauche de l’écran, puis une grille 
se remplit de croix simulant les points de ce crochet. Une croix clignote dans 
la case du coin supérieur gauche de la grille. 

Vous pouvez déplacer cette croix dans les 4 directions afin de noircir 
les cases voulues (en tapant 1) ou de les blanchir (touche zéro). Pour termi- 
ner, tapez la touche RETURN. 





Après la modification 


Ce qu'on obtient 
quand on tape Return 


VOICI L?INSTRUCTION DATA NECESSAIRE 
POUR OBTENIR LE MOTIF 





DATA 8 ,28 ,9 ,30 ,40 ,14 ,17 ,32 


MOTIF OBTENU : # 


162 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








Le modèle réduit est mieux que celui de la grille ! 

A partir de maintenant, la touche [ correspond au coureur, et pour 
le recréer dans un programme après extinction de l’Oric, il suffit d’insérer 
ces cinq lignes. 


50028 DATA 8,28,9,30,40,14,17, 32 
5081@ FOR L=} TO 8 

50020 READ U 

50030 POKE 46080+91*8+L-1,U 
50040 NEXT L 


Et voici cinq possibilités pour faire apparaître le coureur : 


— taper Ê , mais ça n’est valable qu’en mode immédiat. 
— taper : 









PRINT "[" 









PLOT 10,15,91 


E de TEXT 
ce LORES D CURSET 25,18, En mode 
CHAR 91,0,1 haute résolution 





DESSINS EN HAUTE RÉSOLUTION 163 





23 


COURBE DIGITALISÉE 


HIRES  CURSET DRAW 





Pour représenter, à l’aide d’une courbe, un relevé d’observations, par 
exemple la taille d’un enfant selon son âge, il faut une préparation afin d’uti- 
liser raisonnablement la feuille de papier, puis vient le report des points aux 
emplacements convenables ! Nous allons confier au programme suivant la 
préparation du travail, et il suffira de taper les coordonnées de tous les points 
pour qu’ils apparaissent enfin sur l’écran, à leur place respective. 


18 CLS:PRINT 
20 PRINT"TRACE D’UNE COURBE DIGITALISE 


30 INPUT'"'NOMBRE DE POINTS" ;NP 
40 DIM XCNP),YCNP) 

90 : 

69 FOR I=1 TO NP 

7@ PRINT "POINT NO ";1]; 

80 INPUT'X , Y';xXCI),YCI) REMARQUES 
39 NEXT I 

108 : 

119 PRINT :PRINT'RECHERCHE DES EXTREMES 


40 — réservation pour les fichiers x et y des coor- 
données des points 


60 à 90 — boucle d'introduction de ces coordonnées 


120 — réalisation du sous-programme de recher- 


12@ GOSUBR 240 che des extrêmes 
130 : | 
140 HIRES et ee passe au mode haute résolution, blanc 
150 FX=239/CXS-XI) 150, 160 — facteurs d'échelle horizontaux et 
160 FY-199/CYS-YI) verticaux 
178 FOR I=1 TO NP 170 à 210 — boucle de tracé 
189 XE=CXCI)I-XIDXFX 180, 190 on horonite di tadeai 
, — position rizon rt 
198 YE=CYS-YCIDDXFY Dés ORNE EN, 


208 CURSET XE,YE,1 
210 
220 
230 
240 


200 — allumage du point 





164 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








REMARQUES 
XI=X(1) 
CE 260 à 390 — sous-programme de recherche des 
*XS=X(1) extrêmes 


YI=Y 
I GE 260 à 290 — amorce de la recherche : la première 
YS=Y(1) valeur x et y 


310 à 360 — boucle d’analyse des valeurs suivantes 


ee De 380 iont 1 1 tit (ll 
. — si on trouve une valeur plus petite que celle 
IF XCIJD<XI THEN XI=XCI) qu’on a retenue pour d'indtauit, cu Es qu’on 


IF XCIDDXS THEN XS=X(I) prend comme étant la plus petite 
IF YCID<YI THEN YI=Y(CI) 330 à 350 — idem pour les trois autres extrêmes 


IF YCID2YS THEN YS=YCI) 380 — si la courbe est une ligne horizontale ou ver- 
NEXT I ticale, on ne peut pas la cadrer dans l’écran ! 


IF XI=XS OR YI=YS THEN PRINT'REUOI 
R LES COORDONNEES" :END 
332 RETURN 





Exemple : 


Représentation graphique de la taille d’un individu en fonction de son 
âge. 


Age (x) 
années 12 
Taille (y) 
cm 130 |135 |145 


Nombre de points : 17 





TRACE D'UNE COURBE DIGITALISÉE 
NOMBRE DE POINTS? 17 
POINT NO X Y? 9,50 
POINT NO Y? 1,72 
POINT NO Y? 7,85 
POINT Y? 3.92 

*? 4,100 
Y? 5,106 
Y? 6,114 
Y? 7,118 
Y? 8,124 
Y? 3,130 
Y? 19,135 


POINT NO 
POINT NO 
POINT NO 
POINT NO 
POINT NO 
POINT NO 


1 (0 © NU O Ji B WU Nr 
CN MAC EE NC 'X 





DESSINS EN HAUTE RÉSOLUTION 165 





12,145 
14,169 
16,164 
18,165 
20,166 
25; 166 


RECHERCHE DES EXTREMES 





AUTRE POSSIBILITÉ DE TRACÉ 


On utilise pour le tracé précédent la résolution graphique maximum de 
lOric. Si l’on désire des croix au lieu de points, il suffit de modifier’ ainsi : 


140 HIRES REMARQUES 


159 Fx=237/CXS-X 1) 150, 160 — facteur d’échelle horizontal et vertical 
160 FY=-197/CYS-YI) en s’interdisant de placer les centres de croix sur 
les bords de l’écran 


170 FOR I=1 TO NP 
180 XE=CXCI)2-XIDXFX+1 


180, 190 — position horizontale et verticale sur 
l’écran après décalage de 1 pour éviter le bord gau- 


190 YE=C YS-YCID)DXFY+1 che et le haut de l’écran (il faut pouvoir les tracer 
208 CURSET XE-1,YE, 1:DRAU 2,9,1 ces croix !) 
205 CURSET XE >: ŸYE-1,1 :DRAU B,2,1 200 — la branche horizontale de la croix... 





219 NEXT I 205 — et la branche verticale 


166 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








Avec les mêmes données que précédemment on obtient : 





Comment tracer une croix en forme de X au lieu d’un plus (+) ? C’est 
facile, il suffit de remplacer les lignes 200 et 205 par : 
200 CURSET XE-—1, YE-—1, 1 : DRAW 2,2,1 
205 CURSET XE-—1, YE+1, 1 : DRAW 2,—2,1. 

Nous avons entré les données dans l’ordre croissant, mais puique le pro- 
gramme détermine les extrêmes, vous pouvez entrer les vôtres dans n’im- 
porte quel ordre, à condition d’alterner la position horizontale et la position 
verticale. 


DESSINS EN HAUTE RÉSOLUTION 





167 





24 


COURBE PARAMÉTRÉE 


HIRES  CURSET DRAW PATTERN DEF FN 





Il est parfois plus facile de représenter une courbe en reliant l’évolution 
des coordonnées horizontale et verticale à celle d’un paramètre auxiliaire. 
Le cercle en est un exemple célèbre : on obtiendra des points régulièrement 
espacés si l’on fait varier régulièrement la position angulaire de ceux-ci. Il 
faut alors définir deux expressions : celle de l’abscisse (portée ici horizonta- 
lement) et celle de l’ordonnée (position verticale). Le programme aura éga- 
lement comme tâche d’utiliser au mieux l’écran pour le tracé. 


CLS : PRINT 
PRINT'TRACE D’UNE COURBE PARAMETREE 


DEF FNXCTJ=COSCT) 

DEF FNYCTIJ=SINCT) 

INPUT'UALEUR MIN. DU PARAMETREM;TI 
INPUT'"UALEUR MAX. DU PARAMETREMSTE 
INPUT'NOMBRE DE POINTS" 3;NP 

DIM XCNPJ,YCNP) 


PRINT:PRINT'"CALCUL DES COORDONNEES 


TeTI 
TPAS=CTF-TID/CNP-1) 
FOR I=1 TO NP 
KCID=FNXCT) 
YCIDD=FNYCT) 
T=T+TPAS 

NEXT I 


PRINT:PRINT'"'RECHERCHE DES EXTREMES 


GOSUB 348 


HIRES 
FX=239/CXS-XI) 
FY=193/CYS-YI) 
FOR I=1 TO NP 
XE=CXCIDI-XIIXFX 
YE=CYS-YCIDIXFY 
CURSET *%E,YE;,1 





REMARQUES 


10 — définition de l’expression de calcul de la posi- 
tion horizontale d’un point (abscisse) 


30 — définition de l’expression de calcul de la posi- 
tion verticale d’un point (ordonnée) 


50, 60 — introduction des limites de variation du 
paramètre 


70 — introduction de la finesse du tracé (nombre 
de points) 


80 — réservation de mémoires pour les fichiers des 
coordonnées 


20 — calcul de l’écart entre deux valeurs successi- 
ves du paramètre 


130 à 170 — boucle de calcul des coordonnées des 
points 


200 — utilisation du sous-programme de recherche 
des extrêmes parmi les valeurs des abscisses d’une 
part et celles des ordonnées d’autre part 
230, 240 — calcul des facteurs d’échelle 


250 à 290 — boucle de tracé des points 


168 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 











348 XI=xC1) 
350 XS=X*x(1) 
360 YI=Y(1) 
378 YS=Y(1) 
280 + 240 à 370 — amorce de la recherche : la première 
330 FOR I=1 TO NP valeur 

408 IF XCI)D<XI THEN XI=XCI) 
4]1@ IF XCID>XS THEN XS=XCI) 


REMARQUES 


340 à 430 — sous-programme de recherche des 
extrêmes 


390 à 440 — boucle d’analyse des valeurs suivantes 


400 — si on trouve une valeur plus petite que celle 
qu’on a retenue pour l'instant, c’est elle qu’on 


4a2Q IF YCID<YI THEN YI=YCI) 
43@ IF YCID>DYS THEN YS=Y(I) prend comme étant la plus petite 
44Q@ NEXT I 460 — puisqu'on veut utiliser au maximum l'écran, 


la courbe ne peut se réduire à une droite horizon- 
tale ou verticale : rejet 


asS@ : 

a6Q IF XI=XS OR YI=YS THEN PRINT'REUODI 
R LES COORDONNEES" :STOP 

49Q RETURN 





Exemple : 


Pour tracer un cercle, définissons les expressions pour les positions hori- 
zontales et verticales des points 


30 DEF FNXCT)=COSCT) 
40 DEF FNYCTI=SINCT) 


Avec les limites zéro et 2+PI et 200 points, on obtient ce cercle aplati : 










TRACE D’UNE COURBE PARAMETREE 
VALEUR MIN. DU PARAMETRE? @ 
VALEUR MAX. DU PARAMETRE? 6.28 
NOMBRE DE POINTS? 200 










Ce que vous 
devez taper 











CALCUL DES COORDONNEES 


RECHERCHE DES EXTREMES 


DESSINS EN HAUTE RÉSOLUTION 169 











Pour comprendre pourquoi on obtient un ovale sur l’écran plutôt qu’un 
cercle, il faut se rappeler que notre but était d’occuper au mieux tout l’écran, 
et puisque celui-ci est plus large que haut... Le remède à ceci consiste à se 
priver d’une bande verticale de l’écran afin de travailler dans un cadre carré 
en modifiant le facteur d’échelle horizontal déterminé à la ligne 230. Si, de 
plus, on souhaite centrer la figure, il faut modifier le calcul de la position 
horizontale des points à la ligne 260 : 





220 HIRES 

230 FX=180/CXS-XI) 

248 FY=199/CYS-YI) REMARQUES 

25Q@ FOR I=1 TO NP 230 — le facteur d’échelle horizontal sera identi- 
À ue 

R6a XE=CXCI)-XI1)XFX+30 A NN M à 








27Q YE=CYS-YCIDDXFY 
280 CURSET XE,YE,1 
230 NEXT I 


260 — position du centre décallée vers la droite 


30 DEF FNXCT)=COSCT) 
4Q DEF FNYCTI=SINCT) 


voici le résultat : 


TRACE D’UNE COURBE PARAMETREE 
VALEUR MIN. DU PARAMETRE? G 


VALEUR MAX, DU PARAMETRE? 6,28 
NOMBRE DE POINTS? 200 





170 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








CALCUL DES COORDONNEES 


RECHERCHE DES EXTREMES 


Il manque des 


axes : on va les 
ajouter … 





Afin de documenter la figure, nous allons tracer les axes de coordon- 
nées se coupant au point 0,0 en écrivant un sous-programme de tracé des 
axes qu’on utilisera à la ligne 300. 


220 HIRES 

1238 FX=239/CXS-XI) 
248 FY=199/CYS-YI) 
250 FOR I=1 TO NP 
[268 XE=CXCID-XIDXFX | 
27@ TE=CYS-YCIDDXFY 
288 CURSET XE,YE,1 
299 NEXT I 




















| REMARQUE 
300 G : 

SSOESNPERER ARS ] 300 — utilisation du sous-programme de tracé des 
310 : axes 


REMARQUES 
PATTERN 215 
520 XO=-XIXFX 500 à 570 — sous-programme de tracé des axes 
530 YO=YSXEY 510 — motif du tracé 
540 IF X2>-@ AND X2<=239 THEN CURSET x 520, 530 — position sur l’écran de l'intersection des 
9,0,1:DRAWU G,199,1 Ares 
5S5@ IF Y2>-0 AND Y2<=199 THEN CURSET @ 540, 550 — tracé des axes horizontal et vertical, si 
, YO, 1 :DRAU 239,0, 1 cela est possible 
56Q PATTERN 255 560 — on reprend le motif trait plein 


570 RETURN 





DESSINS EN HAUTE RÉSOLUTION 171 








Exemples : 
Bien des figures peuvent être tracées telle que celle-ci avec : 


30 DEF FNXCTI=TXCOSCT) 
4@ DEF FNYCTJI=TXSINCT) 


TRACE D’UNE COURBE PARAMETREE 
VALEUR MIN. DU PARAMETRE® Q 
VALEUR MAX. DU PARAMETRE® 31,4 
NOMBRE DE POINTS? 400 


CALCUL DES COORDONNEES 


RECHERCHE DES EXTREMES 


Î 
Î 
+ 


| 

| 

| 

| 

| 

l 

| 

| 

| 
TT 
+ 


+ en sg em à 





ou en prenant : 


JOIDEF ENKÇCTIET 
4Q DEF FNYCTI=CT-1)XCT+2) 


172 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





TRACE D’UNE COURBE PARAMETREE 
VALEUR MIN. DU PARAMETRE? --3 
VALEUR MAX, DU PARAMETRE? 2 
NOMBRE DE POINTS? 20 


CALCUL DES COORDONNEES 


RECHERCHE DES EXTREMES 





courbe tracée entre —3 et 2 avec 20 points 





DESSINS EN HAUTE RÉSOLUTION 


173 





DIAGRAMME CIRCULAIRE 


HIRES  CURSET CIRCLE DRAW CHAR 





Pour comparer visuellement l’importance relative de plusieurs valeurs, 
on peut utiliser un diagramme circulaire encore appelé « camembert » ! Cha- 
que valeur est représentée par un secteur, une part du camembert, dont la 
taille lui est proportionnelle. La réunion de toutes ces portions forme un disque 


complet. 


CLS : PRINT :PRINT'DIAGRAMME CIRCULAIR 


PRINT :INPUT'NOMBRE DE VALEURS" ; NP 


DIM UCNPI 
ST=0@ 


. 
e 


FOR I=1 TO NP 
PRINTUUALEUR NO MSI; 
INPUT UCI) 
ST=ST+UCI) 

NEXT I 


HIRES 
*@=114:Y@0-1008 
R=60 

CURSET *x0,Y0,0 
CIRCLE R;,1 
AE=2XPI/ST 
DRAW R,D,1 


SP=Q:A1=0Q 
FORI=1 TO NP 


SP=SP+UCI) 

A2=SPXAE 

CURSET *x8,Y2,0 

DRAW RYXCOS(A2),-RXSINCAZ)J,1I 





REMARQUES 
30 — réservation de mémoire pour les nb valeurs 
40 — valeur initiale de S : somme des valeurs 


60 à 100 — boucle d'introduction et de cumul des 
valeurs 


90 — cumul 

130 — emplacement du centre du cercle 
140 — rayon du cercle 

150 — le centre 

160 — tracé du cercle 

170 — facteur d'échelle angulaire 


180 — tracé du bord horizontal de la première 
portion 


200 — valeur initiale de SP somme progressive des 
valeurs, et de A1, position angulaire d’un des bords 
d’une portion 

210 à 380 — boucle de découpage du camembert 


230 — cumul des valeurs 


240 — position angulaire de l’autre bord d’une 
portion 


250, 260 — tracé de bord 


174 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





280 AM=(CA1+A2)/2 

290 CURSET XB+R/2XCOSCAM), YB-R/2XSINCA 
N),0 

300 IF UCI)>=@ THEN CH$=MIDS$SCSTR$CUCI) 
3,2) ELSE CH$=STR$CU(I)) 

310 FOR C=1 TO LENCCHS) 

320 CHAR ASCCMID$S(CHS,C,1)),@,1 

330 CURMOU 6,0,0 

348 NEXT C 

350 : 


360 A1=A2 
378 NEXT I 
380 : 

330 END 








REMARQUES 


280 à 340 — affichage de la valeur à l’intérieur de 
la portion 


280 — angle moyen 
290 — point de départ de l’affichage 


300 — on exclut le premier caractère d’une valeur 
positive, car il ne plaît pas à la fonction ASC 


310 à 340 — boucle d’affichage des caractères qui 
constituent la valeur 


320 — affichage 
330 — on se décale pour écrire le caractère suivant 


360 — le bord final de la portion devient le bord 
initial de la portion suivante 


Exemple : diagramme circulaire de l’importance des différents moyens 
de transport de marchandises en 1982 : 


oléoduc 11 % 
voie fluviale 5 % 
route 49 % 
voie ferrée 35 % 


DIAGRAMME CIRCULAIRE 


NOMBRE DE UALEURS?T 4 
UALEUR NO 1 ? 11 
VALEUR NO 275 
VALEUR NO 3 ? 49 
VALEUR NO 4 ? 35 






Faut-il regretter 
que la voie fluviale 
soit peu empruntée ? 


LE MOMENT MUSICAL 175 





26 


FILL : DU REMPLISSAGE AVEC 64 MOTIFS 


HIRES CURSET CURMOV FILL CHAR 





HIRES 


PRINT:PRINT'MOTIFS OBTENUS AUEC FIL 


FOR P=32 TO 9S 
IP=INT(P/16) 
XP=IPx30 
YP=IOXCP-IPXx16) 
CURSET XxP,YP,@ 


FILLE SEP 
CURSET XP+10,YP,Q 90, 100 — préparation à l'écriture du code P 


P$=STR$S(P) 


L’instruction FILL permet de remplir rapidement une zone de l’écran 
soit en couleurs : 


FILL 1@,1,17 


soit avec des motifs de hauteur réglable et que l’on peut choisir dans un jeu 
de 64. Chacun de ces motifs est formé de bandes verticales noires ou blan- 
ches. Pour les comparer entre eux nous allons les placer l’un en-dessous de 
l'autre sur quatre colonnes. En face de chacun nous écrirons son code que 
vous pourrez placer dans une instruction : 


FILL 19,1,P 


REMARQUES 


30 à 140 — boucle permettant d'explorer les 64 
possibilités 


40 — IP numérote les colonnes (0 à 3) 


50, 60 — positions horizontale et verticale du coin 
inférieur gauche d'un motif 


70, 80 — dessin du motif 


110 — le chiffre de gauche 


CHAR ASCCNID$S(P$S,2,1)),9,1 130: 130 ct de droite 


CURMOU 6,0,0@ 


CHAR ASC(MID$(P$,3,1)),9,1 


NEXT P 





La position des barres blanches obéit plus ou moins à un système de 
numération binaire. Faites votre choix : 


176 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








NJ 


4 
ñ 


MOTIFS OBTENIIS AVEC FILL 





REPONSES AUX QUESTIONS SUR LE CHAPITRE VII 

1. En HIRES, la définition de l’écran est de 299 rangées sur 249 colonnes. 
2. CURSET sert à positionner le curseur. 

3. CURMOV déplace le curseur par rapport à sa position antérieure. 


4. CIRCLE est accompagné de son rayon et du nombre FD. (Son centre est fourni 
par la position du curseur.) 


5. DRAVW tire un trait entre la position du curseur et un point dont on donne les 
coordonnées en valeurs relatives. 


6. FILL sert non seulement à mettre de la couleur mais commande aussi le clignote- 
ment, le placement de motifs graphiques, etc. 


7. REPEAT UNTIL commande la répétition d’une séquence tant que la condition 
posée n’est pas réalisée. 


8. Si N vaut 7, la condition N supérieure à 8 n’est pas remplie et, par conséquent, le 
branchement en 79 ne se fait pas. Donc, le programme passe en 69 et affiche 
BONJOUR. 


9. L’ordre KEY$ n’arrête pas le programme : lorsque le Basic le rencontre, à quel- 
qu’instant que ce soit, il lit le clavier. 


CHAPITRE VIII 


LE MOMENT MUSICAL 


Nous vous avons déjà montré comment programmer les quatre « bruits » qui exis- 
tent en instructions. Maintenant, c’est de la « musique » que nous allons faire. On 
examinera aussi, dans ce chapitre, quelques dernières instructions en Basic qui vous 
permettront de vous lancer sans hésiter dans la programmation. 


Principaux thèmes abordés 


SOUND Enveloppe des sons 
MUSIC Accord musical 
PLAY Période avec SOUND 
Notes musicales GET 

Canaux des sons 





1. MUSIC, pour commencer 


Pour faire de la musique, vous disposez de trois commandes qui sont SOUND 
(pour son), MUSIC et PLAY (pour jouer). En première approche : 


e SOUND sert à définir un son. Cet ordre est accompagné de 3 paramètres. Si le 
dernier n’est pas nul, le son est émis pour cet ordre, mais s’il est égal à zéro, le son 
est « mis en mémoire » et exécuté par un ordre PLAY suivant. 


e MUSIC, lui, ne définit pas n’importe quel son mais les notes de musique de la 
gamme. Son dernier paramètre joue comme avec SOUND. 
e PLAY exécute des sons (SOUND ou MUSIC) définis antérieurement. 


Commençons par l’ordre MUSIC. Pour jouer des notes de la gamme, il faut définir 
la note, bien sûr, mais indiquer aussi dans quelle octave elle se situe, quel canal de 
l’Oric elle emploiera et enfin, quelle sera sa puissance sonore (son volume). Ainsi, 
MUSIC doit être accompagné de 4 paramètres dans cet ordre : 


7 octaves, de 0 à 6 















12 tons, de 
1 à 12 : voyer 
ci-dessous 








De 1 à 15, 
avec 15e 
plus fort; 

le O est un 
cas spécial 















Hyena3: 
mettez 1, 2ou3 


MUSIC canal, octave,note, volume 


Notez les virgules de séparation : elles sont obligatoires. Commencez par essayer, 
en mode direct : 


178 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Octave 





Au RETURN vous reconnaîtrez un sol, 2° octave (si vous êtes musicien). Pour 
stopper le son, frappez sur n’importe quelle touche, la barre d’espacement de pré- 
férence. Si les touches ne sont pas sonorisées, tapez d’abord CTRL/F. 


Les octaves sont numérotées de # à 6, le # 
étant le plus grave. 


Les notes, elles, sont données ainsi, si l’on reprend l’exemple d’un clavier de 


NOTES MUSICALES 
O © &@ 


Sol # La # 





Numéros 


des notes 


Le dernier paramètre de MUSIC situe le volume sonore. Essayez tout d’abord quel- 
ques combinaisons avec l’ordre MUSIC, en mode direct mais avec le canal 1. 


On va voir que, pour exploiter les 3 canaux 
sonores de l’Oric, il faut employer 
l’instruction PLAY. Donc, pour l'instant, 
restez-en au canal 1. 


En fait, le plus simple consiste encore à passer par le court programme suivant, qui 
va vous permettre de modifier à chaque fois tous ces paramètres : 


0 REM *MUSICx* 

9 INPUT "OCTAVE=";0 
9 INPUT "NOTE=";N 

9 INPUT "VOLUME=";V 
9 MUSIC 1,0,N,V 

9 GOTO 29 


LE MOMENT MUSICAL 179 


Les lignes 29 à 49 vont, grâce à l’ordre INPUT qui combine implicitement un 
PRINT de ce qui est contenu entre guillemets, vous demander ces divers paramè- 
tres ; voici ce que donnerait un RUN : 













Faites RETURN 
après chaque 
SP ep tr h entrée LP 


RUN 

OCTAVE=? 3 

NOTE=? 5 

VOLUME=? 12 

OCTAVE=? 

ss a nn e entr Au dernier RETURN, la }- — 
note programmée 
retentit, mais 
{. La question suivante aussi … 


apparait : dès que vous 
frapperez une touche, la 
note émise cessera 












Expérimentez plusieurs combinaisons, afin de bien maîtriser les valeurs des para- 
mètres : pour terminer, faites CTRL/C. 


2. Pour jouer : PLAY 

Si le dernier paramètre de MUSIC est un 9, l’ordre MUSIC n’est plus exécuté et 

dépend d’un autre ordre, PLAY. Celui-ci, à son tour, est accompagné de paramè- 
PLAY tres au nombre de 4 : 

1) — Le canal, qui détermine le, ou les canaux actifs (de 9 à 7). 


2) — Le « bruit », qui agit sur ces sons bi’arres qu’on appelle bruits, programmés 
avec SOUND et non avec MUSIC (1 à 71. 


3) — L'’enveloppe, qui agit comme bruit maïs cette fois, sur les sons. 
4) — La durée : c’est le temps pour l’exécution de « l’enveloppe » ou du « bruit ». 


Reprenons en détaillant, cette fois. 
e Les canaux sont ainsi numérotés : 


Programmation des canaux avec PLAY 


9 
1 
2 
3 
4 
5 
6 
7 


CANAUX 


DES SONS 






1,2et 3 


e Le « bruit » ou « l’enveloppe » définissent ce qu’en termes techniques, on 
appelle la courbe enveloppe du son et qu’on pourrait ainsi interpréter : 


180 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Enveloppe des sons et des bruits 


Son décroissant (durée déterminée) 
Son croissant (durée détèrminée) 


ENVELOPPE 


DES SONS 





Son périodique, continu, en « dents de 
scie » 


Son périodique, continu, « ondulé » 


Son nom périodique, continu, difficile à 
définir 


Son périodique, continu, en dents de 
scie inverses de 3 


Son nom périodique, continu, différent 
de 5 et aussi difficile à définir. Mais on 
va écouter tout cela. 


e La durée, enfin, va de 9 à 32 767 ; pour comprendre son rôle, on va l’expérimen- 
ter. 
La syntaxe de PLAY est ainsi : 


1à7 
Oà7 C0 à 32767 


PLAY canal, bruit,enveloppe, durée 


A nouveau, toutes ces explications écrites sont indigestes si on ne pratique pas. 
Aussi, pour les expérimenter, va-t-on vous proposer un programme du même type 
que le précédent, ou le PLAY sera combiné à un MUSIC 1,2,8,9 (notez que le der- 
nier paramètre est un zéro, afin de passer la main au PLAY qui suit). Procédons 
cependant ici paramètre par paramètre pour commencer ; nous avons volontaire- 
ment séparé ces divers programmes d’essai afin que vous puissiez y revenir ensuite. 
Voyons pour la durée : 












209 REM --DUREE DE © A 32767-- 

219 MUSIC 1,2,8,90 

229 INPUT "DUREE" 

230 PLAY 1,0,1,D 

RUN 200 main» à PLAY 







pour 
exécution 


Pour PLAY, on a choisi le 


N'oubliez pas de préciser le 
canal 1 et l’enveloppe 1 


RUN 200 





Au RUN, le programme vous demande la durée. Commencez par frapper 1599 : 
vous obtiendrez un so/ comparable à celui d’un piano (le son s’éteint très vite). 
Moins de 59, le son est trop bref. Plus de 5999, il n’en finit plus de s’atténuer et de 
mourir. Essayez plusieurs valeurs, puis faites CTRL/C. 

Expérimentons, maintenant, l'enveloppe avec une durée de 1599. Voici le nouveau 
programme : 


ACCORD 


MUSICAL 





LE MOMENT MUSICAL 181 


309 REM -ENVELOPPE, DE 1 A 7- 
319 MUSIC 1,2,8,9 

320 INPUT "ENVELOPPE';E 

330 PLAY 1,0,E,1509 

349 GOTO 310 

RUN 399 


Avec enveloppe = 1, vous retrouvez la frappe d’un piano. Avec 2, c’est l’inverse : le 
son démarre faible et s’amplifie jusqu’à son maximum, cela pendant la « durée » 
de 1599 (une durée supérieure lui accorderait davantage de temps). 

Avec 3, c’est un marteau qui frappe continuellement la note sol ; comme si vous 
faisiez 1 en permanence. Le 4, lui, vous donne à peu près le 2 en répétition conti- 
nue. Le 5 démarre bizarrement, un peu comme en 1, puis reste sur un son continu. : 
Le 6 ressemble au 3, mais est encore moins harmonieux peut-être. Enfin, le 7 four- 
nit une montée rapide en puissance, comme le 2, et se poursuit par un son continu. 
Ces explications sont approximatives : rien ne vaut un essai. 

Franchissons encore un pas, en travaillant à la fois sur l'enveloppe et la durée avec 
la séquence suivante : 


1909 REM -ENVELOPPE ET DUREE- 
119 MUSIC 1,2,8,0 

129 INPUT "ENVELOPPE'";E 

130 INPUT "DUREE" ;D 

140 PLAY 1,0,E,D 

159 GOTO 129 

UN 


Essayez plusieurs combinaisons ; pour l’enveloppe 1 et 2, le résultat est évident : le 
« piano » ou un son croissant, durant ce que vous fixez avec D. Essayez avec : 


e Enveloppe 3 : pour durée = 1999, c’est une enclume sur laquelle on frappe à 
coups répétés. À 19999, c’est la cloche d’une église (l’auteur fait un peu de poésie). 
A 199, c’est un moteur qui ne tourne pas rond. Le son se répète à chaque fois à per- 
pétuité, jusqu’à une nouvelle frappe. 


e Enveloppe 4 : avec D = 1999, c’est un avion qui marche très mal (ou une scierie) ; 
avec D = 1999, on obtient un son qui commence très fort, diminue, disparaît, puis 
réaugmente, atteint son maximum, puis rediminue, etc. Si D = 199, c’est un teuf- 
teuf rapide. 


e Enveloppe 5 : avec D = 1999, c’est un « point » suivi d’un son continu ; avec 199, 
on ne l’entend plus, mais le son est toujours continu ensuite. 


e Enveloppe 6 : reportez-vous au 3, à peu près. 
e Enveloppe 7 : comme 5, mais au lieu d’un « point », c’est un son croissant. 


En conclusion, la durée, avec l’enveloppe 5 et 7, agit sur la courte période prépara- 
toire du son, mais plus sur la suite. 

Si, de plus, vous faites des essais avec des « enveloppes » non prévues, vous risquez 
d’obtenir toutes sortes de choses curieuses et indescriptibles. 


3. Des accords 


Il est temps, maintenant, de vous montrer comment actionner plusieurs canaux 
simultanément. Pour cela, il faudra employer obligatoirement PLAY. Par exem- 
ple, pour travailler avec les 3 canaux, on sera en PLAY 7 pour le premier paramè- 
tre. Un accord do, mi, sol se programmerait ainsi : 


182 


PERIODE AVEC 
SOUND 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


5 REM *ACCO 
19 MUSIC 1 
29 MUSIC 2 
39 MUSIC 3 
49 PLAY 7, 


RUN 


RD 
2: 
2; 
2, 
9 


- QUI x 


9 


Cette fois, on a programmé la puissance avec MUSIC ; c’est PLAY qui met en ser- 
vice les trois canaux (faute de quoi, seul le canal 1 fonctionnerait). 


Ici, PLAY ne sert qu’à programmer les 
canaux ; c’est pourquoi ses autres paramètres 
sont à zéro. D’autres valeurs ne joueraient 
pas sur le résultat. 


Essayez de remplacer le 7 de PLAY par d’autres valeurs ; à chaque fois, vous 
entendrez les canaux mis en service, 2 ou 1. Par contre, le @ les interdit tous ; on va 
s’en servir pour programmer cet accord sur 1 seconde, puis pour l’arrêter ; ajoutez 
59 et 69 : 





Pendant une seconde … 





5 REM XACCOR 
19 MUSIC 1,2 
29 MUSIC 2,2 
39 MUSIC 3,2 
49 PLAY 7,6, 
59 WAIT 190 

69 PLAY 0,0, 





… Puis retour 
ES au silence 77 


Vous pouvez, maintenant, programmer « Au clair de la lune » ou des mélodies 
plus « savantes » si vous le désirez. 


4. Sons divers 


Il nous reste à examiner l’ordre SOUND, qui agit comme MUSIC. On doit préci- 
ser : le canal, la période et le volume : 


e Le canal sera, cette fois : 

— 1, ou 2, ou 3 pour des sons purs 

— 4, 5 ou 6 pour des « bruits ». 

En fait, il n’y a qu’un canal pour les bruits, le canal 4. Aussi 4, 5 et 6 reviennent à 
spécifier quel canal son (1, 2 ou 3) doit être mêlé au canal 4. 


e La période est un terme technique : elle fixe la hauteur du son. Plus sa valeur est 
forte et plus le son est grave. Chaque note de la gamme est déterminée par une 
valeur précise de la période ; avec SOUND, vous pourrez imaginer toutes les notes 
possibles. 


e Enfin, le volume va de 1 à 15, comme avec MUSIC. A zéro, il transmet l’exécu- 
tion à PLAY. 


La syntaxe de SOUND est ainsi : 


LE MOMENT MUSICAL 183 


1à6 





SOUND canal, période, volume 


Commençons par expérimenter la période avec ce programme : 


19 REM -PERI 
29 INPUT "PE 
39 SOUND 1,P 
49 GOTO 29 





Au RUN, entrez plusieurs valeurs ; vous constaterez que les hauteurs de sons cou- 
rants se situent autour des centaines. Terminez par CTRL/C. 

Pour mettre les divers canaux en service, il faut, à nouveau, passer par PLAY. 
Mais alors là, les combinaisons sont quasi-infinies et nous ne pouvons vous les 
décrire. Voici, par exemple, comment obtenir un coup de feu (sans SHOOT) : 


NEW 
19 SOUND 5,599,19 
29 PLAY 7,1,0,500 


Chaque nouveau coup de feu vous imposera un RUN. Voici comment « tirer » au 
moment que vous choisirez. 


5. Attendez une touche 


Il existe une méthode servant à attendre la frappe d’une touche pour déclencher des 

opérations. On passe alors par l’ordre GET ; lorsque le Basic rencontre GET, il 
GET stoppe toute exécution et attend la frappe d’une touche. Vous pouvez sélectionner 
une touche particulière, ou aucune en particulier, et dans ce cas, toutes seront pri- 
ses en compte. Dès que vous en frappez une, le Basic poursuivra alors son pro- 
gramme. Voici ce que cela donnerait avec notre coup de feu : 











On n'a défini aucune 
touche en particulier. 
Dés /a frappe d'une d'elles, 








le programme se poursuit à es -- COMMANDE DE FEU-- 
19 SOUND 5,549, 
29 PLAY 7 
30 GOTO 8 








La valeur correspondant 
à la touche frappée 
s’appellera T$ 


Après GET, on donne généralement un nom de chaîne à la touche frappée. Vous 
pourriez, ensuite, vérifier par programme que T$ correspond à telle touche que 
vous avez sélectionnée pour le tir, par exemple la touche ? (et pourquoi pas). 


184 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Dès le RUN, le programme attend ici la frappe d’une touche. Dès qu’elle se pro- 
duit, le coup de feu part. Hélas : le bruit propre des touches, qui sont sonorisées, 
perturbe notre coup de feu. Il faudrait supprimer cette sonorisation avec un 
CTRL/F avant le RUN, comme on l’a vu (on la rétablira avec CTRL/F aussi). 
Mais essayez donc, maintenant, de stopper ce programme : toutes les touches qu 
combinaisons de touches, y compris CTRL/C, déclenchent un coup de feu ! Avez- 
vous une idée sur la façon de vous en sortir ? Oui, c’est cela : retournez l’Oric et 
appuyez sur le RESET. Vous pouvez alors faire CTRL/F, puis RUN, à nouveau. 
Constatez qu’en maintenant n’importe quelle touche enfoncée, vous simulerez une 
mitrailleuse. 

A partir de cela, vous pourriez imaginer le programme suivant : vous passez en 
mode graphique et vous déplacez un mobile coloré sur l’écran. Il n’est vulnérable 
que sur certaines positions que vous déterminez. Si vous tirez à ce moment, vous le 
désintégrez ! Et si ce projet ne vous convient pas, rien ne vous interdit d’en conce- 
voir d’autres ! 

Toujours est-il que vous en connaissez maintenant assez pour passer aux program- 
mes que nous vous proposons à la fin de chaque chapitre, et à ceux qui sont regrou- 
pés dans le chapitre 9. Vous pourrez alors broder sur ces programmes et innover en 
écrivant les vôtres. 


Pour la musique trois instructions c’est peu et c’est beaucoup à la fois ! SOUND, 
MUSIC et PLAY ont en effet bien des possibilités, mais il faut du temps et de la 
patience pour les découvrir. Si on veut comparer l’effet produit par SOUND 1, 2, 3 
par exemple, il faut taper une bonne vingtaine de touches, de quoi perdre le fil !. 
Pour évaluer les richesses de SOUND), voici un programme qui ne vous demandera 
que ce que vous voulez changer à chaque nouvel essai. Nous ferons la même chose 
pour MUSIC et PLAY pour qu’il n’y ait pas de jaloux ! 


QUESTIONS SUR LE CHAPITRE VIII 


Il est évidemment peu intéressant de répondre à des questions sur les sons sans 
manipuler. Voici cependant ce que vous devez conserver à l’esprit : 


SOUND et MUSIC peuvent-il provoquer l'émission de sons, sans recours à 
PLAY ? 

[ Oui 

[ Non 


MUSIC sert à créer : 
Ü] Des sons de timbre absolument quelconque 
[] Uniquement les notes de gammes musicales 


Quel ordre provoque la mise en service de plusieurs canaux simultanément ? 


O MUSIC 
O) PLAY 


Pour créer des bruits divers, on utilisera : 
[] SOUND 
CO MUSIC 


L'ordre GET : 
© Sert à lire le clavier, sans arrêter le programme, à la volée 
Ü Stoppe le programme et attend qu’une touche soit frappée. 





Réponses page 194 


LE MOMENT MUSICAL 185 





27 


SOUND : DÉCOUVREZ LES SONS 


SOUND GET 





SOUND a besoin de trois paramètres pour produire un son : le numéro 
du canal, la période et le volume. Au démarrage du programme qui suit c’est 
le canal 1 qui produira un son musical de période 1000 avec le volume 3. 
Ensuite vous changerez à volonté un de ces trois paramètres en conservant 
les deux autres. Pour chaque son produit le programme affichera l’instruc- 
tion SOUND complète, comme si vous l’aviez tapé au clavier. Notez les com- 
binaisons qui vous plaisent, vous les placerez dans vos programmes... Un 
son durera jusqu’à ce qu’on modifie un paramètre. Pour terminer taper CTRL 
CE: 


C=1:P=1A0Q0 :U=3 REMARQUES 
a | 10 — les paramètres de départ 
20 à 100 répéter jusqu’à ce qu’on tape CTRL C 
30 — le ménage sur l'écran 
PRINT'SOUND. "$C 5", MSP Sr SU 
GET T$ 40 — le son 
JF T$="C" THEN [NPLT'CANAL 1 À 6"$C 50 — l'image 


80 IF T$="P" THEN INPUT"PERIODE @ À 32 


267" ;P 


60 — attente d'une frappe de touche 


70 à 90 — les trois choix possibles 


QQ IF T$="U" THEN INPUT"UOLUME @ À 15" 


JU 


1@@ LINTIL T$=CHR$(3) 





Au départ, vous obtenez : 


SOUND 1 ,1900 ,3 


Pour changer le canal, tapez € puis le numéro. 
Pour la période c’est P et le volume V : 


SOUND 1 ,2900 ,6 


Essayez plusieurs canaux, et vous remarquerez qu’il n’y a guère que le 
1 qui donne quelque chose, pour l'instant. Que se passe-t-il si on multiplie 
ou si on divise la période par 2 ? 


Testez votre oreille : diminuez la période en gardant le volume 3. 

Si vous arrivez à une période de 5, c’est très bien, entre 6 et 8 ça va ; 
au-dessus, c’est peut-être le haut-parleur qui faiblit ! Pourquoi ne pas rac- 
corder l’Oric à votre chaîne hi-fi ou un appareil de ce genre ?... 


186 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





28 


MUSIC : MUSIQUE 


MUSIC GET 





MUSIC a besoin de 4 paramètres : numéro de canal, octave, note et 
volume. 

Adoptons le même principe que pour le programme 27 : un choix entre 
4 frappes de touches pour préciser le paramètre qu’on veut changer, C, O, 
N ou V. Puis on tape la valeur de ce paramètre (suivie de return) et le son 
retentit accompagné du texte de l’instruction MUSIC qu’il aurait fallu taper. 


10 C=1:0=2:N=] :0=3 


28 REPEAT 

3Q CLS 

4Q MUSIC C,O,N,U 

50 PRINT'MUSIC ";C;","30;","3;3N;","3U REMARQUES 

68 GET T$ 10 — les paramètres de départ 

78 IF T$="C" THEN INPUT'CANAL 1 À 6";C 20 à 110 — répéter jusqu’à ce qu’on tape CTRL C 
80 IF T$="0" THEN INPUT"OCTAUE Q À 7"; Lo 

0 50 — l’image 

3SQ IF T$='"N" THEN INPUT'NOTE 1 À 12'";N 60 — attente d’une frappe de touche 


70 à 100 — étude des 4 cas 
100 IF T$="U" THEN INPUT'"'UOLUME 8 À 15 


ASE) 
3 
110 UNTIL T$=CHR$(3) 





Pour commencer : 


MUSIC 1, 2, 1, 3 






Ce qu’on obtient 
après RUN 





Montez la gamme : fixez l’octave et passez en revue les notes 1 à 12, 
puis recommencez pour l’octave au-dessus. 





MOUSTE Les. st. 3 






En tapant, par exemple, 
la lettre O, puis 3 suivi 


de RETURN : Ici encore, seul le canal 1 fonctionne. 






Nous découvrirons les autres grâce au concours de l'instruction PLAY... 
Mais pourriez-vous couvrir 8 octaves comme le fait déjà MUSIC ? 


LE MOMENT MUSICAL 187 





29 


SOUND MUSIC PLAY : 


POUR MELANGER LES SONS 
SOUND MUSIC PLAY 





Sans l’instruction PLAY, SOUND et MUSIC ne délivrent qu’un seul son. 

Pour apprécier les nombreuses possibilités de l’ensemble PLAY, 
SOUND, MUSIC, nous vous proposons un programme dans la lignée des 
deux précédents, mais beaucoup plus long, car le domaine est vaste ! 

Pour chacune des trois instructions, vous pourrez choisir de modifier 
un des paramètres. Afin d’y voir plus clair, on affichera dans la moitié infé- 
rieure de l’écran (rouge), l’instruction SOUND ou MUSIC Ia plus récente 
concernant chacun des 6 canaux, et on mettra à jour le texte de l’instruction 
PLAY. 

Le haut de l’écran (vert) servira de journal de bord relatant les diverses 
directives que vous donnerez. 


1 PLAY 0,0,0,0 
28 POKE 623,27 
39 PAPER 1':CLS 


REMARQUES 


10 — arrêtez la musique ! 


4Q POKE 623,14 20 — plein écran 
50 POKE 619 », 18 30 — fond rouge, partout 
Fee 40 — écran réduit : les 14 lignes du haut 
DIM P(6),0(6),NC6),UC6) 
8Q B+=" ’ ! ; 50 — fond vert pour le haut 
9Q FOR C=I1 TO 6 70 — réservation pour les paramètres période, 
18@ N(C)=1 octave, note, volume 
11@ NEXT C 80 — pour blanchir plus tard : 23 espaces 
12@ : 90 à 110 — initialisation des notes à 1 pour les six 
130 REPEAT canaux 
148 PRINT :PRINT'S:SOUND, M:MUSIC, P:PLAY D On EE quon br ur 
> F:FIN?" 
150 GET I$ 140 — le premier choix 


150 — attente d’une frappe de touche 


168 IF T$-"S\ THEN GOSUB 1290:T$="" 
170 IF T$-"M" THEN GOSUB 2000 :T$="" 160 — SOUND 
189 IF T$-"P" THEN GOSUB 3000 :T$="" 170 — MUSIC 
138 UNTIL T$="F" D EERe 








188 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








1008 PRINT"SOUND" 

1018 PRINT"C:CANAL, P:PERIODE, U:UOLUME? 
1020 GET T$ 

1030 IF T$="C" THEN INPUT"CANAL 1 À 6";C 
:GOTO 1010 

1040 IF T$="P" THEN INPUT"'PERIODE 0 À 32 
267" ;PCC) 

105@ IF T$="U" THEN INPUT"UOLUME @ À 15" 
5UCC) 

1060 PLOT 1,13+2XC,B$ 

1070 A$="SOUND "+STR$(C)+", "+STR$S(P(C))+ 
"3 "+STRSCUCC)) 

1080 PLOT 1,13+2XC,;A$ 

1930 SOUND C,PCCJ;UCC) 

1100 RETURN 

1390 

200@ PRINT"'MUSIC" 

2010 PRINT"C:CANAL, O:OCTAUE, N:NOTE, U: 
UOLUME ?" 

2020 GET T$ 

2030 IF T$="C" THEN INPUT"CANAL 1 À 3";C 
:GOTO 2810 

2040 IF T$="0" THEN INPUT"OCTAUE @ À 7"; 
OCC) 

2050 IF T$="N" THEN INPUT'NOTE 1 À 12"3;N 
CGJ 

2060 IF T$="U" THEN INPUT"'UOLUME @ À 15" 
3UCC) 


287@ PLOT 1,13+2XC,;B$ 

2080 A$="MUSIC "+STR$(C)+", "+STR$SC(OCC) 
+", "+STR$SCNCC))+", "+STRSCUCC)) 

2090 PLOT 1,13+2XC,A$ 

2188 MUSIC C;,OCC),NCC)J,UCC) 

211Q RETURN 

2390 : 

3008 PRINT"PLAY" 

301 PRINT'N:CANAL NOTE, B:CANAL BRUIT 
s F:FORME, D'DUREE?\" 

3020 GET T$ 

3038 IF T$="N" THEN INPUT'"CANAL NOTE Q 
A 7";CN:GOTO 3018 

3040 IF T$="B" THEN INPUT"CANAL BRUIT 
@ À 7";CB:GOTO 3818 

3050 IF T$="F" THEN INPUT"FORME 1 À 7" 
5F 

3060 IF T$="D" THEN INPUT"'DUREE Q À 32 

267" 5D 


REMARQUES 


1000 à 1100 — sous-programme d'utilisation de 
l'instruction SOUND 


1010 — sous-choix 

1020 — attente d’une frappe de touche 

1030 — choix du canal 

1040 — choix de la période 

1050 — choix du volume 

1060 — effaçage de l’ancienne instruction SOUND 
1070 — texte de la nouvelle 

1080 — affichage 


1090 — le son 


REMARQUES 


2000 à 2110 — sous-programme d'utilisation de 
l'instruction MUSIC 


2010 — sous-choix 

2020 — attente d’une frappe de touche 

2030 — choix du canal 

2040 — choix de l’octave 

2050 — choix de la note 

2060 — choix du volume 

2070 — effaçage de l’ancienne instruction MUSIC 
2080 — texte de la nouvelle 

2090 — affichage 


2100 — le son 


REMARQUES 


3000 à 3210 — sous-programme d'utilisation de 
l'instruction PLAY 


3010 — sous-choix 

3020 — attente d’une frappe de touche 

3030 — choix du ou des canaux de sons purs 
3040 — idem pour les canaux bruits 

3050 — forme 


3060 — durée 


LE MOMENT MUSICAL 189 





REMARQUES 

311Q FOR I=1 TO 3 

312@ NC=CN AND 2"(I-1) es HAT de marquage des canaux con- 
700 BERCB" AND, PCI 3120 — NC vaut 1 pour un canal son concernés par 
3140 IF NC THEN PLOT @,13+2XI,"x" ELSE PLAY 

PLOT G,13+2XI," " 
3150 IF RC THEN PLOT @,19+2X/I,"x" ELSE on 

PLOT @,19+2XI," " ARS RARES par une étoile si le canal son n° 1 
316Q NEXT I 

3178 PLOT 15,28,B$ 

3180 AS$S="PLAY MAESTRSCCNI+", "4+STRS(CB)+ 3170 — effaçage de l’ancienne instruction PLAY 
Ms MESTRECF)+"S MESTRECD) 3180 — texte de la nouvelle 

3198 PLOT 15,20,A$ 3190 — affichage 

3208 PLAY CN,CB,F,0D 
321@ RETURN 


3130 — idem pour un canal bruit 


3150 — idem pour le canal bruit n° 1+3 


3200 — exécution 





Et maintenant vous allez être récompensé de votre effort, puisque vous 
pourrez essayer confortablement toutes les combinaisons qui vous passent 
par la tête, à condition qu’elles soient possibles. Pour ne pas allonger le pro- 
gramme, nous n’avons pris aucune sécurité : si vous demandez l’impossi- 
ble, vous obtiendrez un message d’erreur et le programme s’interrompra. 
Ce n’est pas grave, tapez GOTO 130, et tout repartira comme avant ! 


Exemple : 

Tapez RUN puis 

S C 1 Return P 300 Return 

S:SOUND, M:MUSIC, P:PLAY, F:FIN? 
SOUND 

C:CANAL, P':PERIODE, U:UOLUME? 
CANAL 1 À 6? 1] 


C:CANAL, P:PERIODE, U:UOLUME? 
PERIODE Q A 32767? 300 


S'SOUND, M:MUSIC, P:PLAY, F3FIN? 


SOUND 1,300, 





Il manque le volume et le lancement par PLAY ; tapez S V 3 Return 
(on ne reprécise pas le canal, puisque c’est le même) puis P, vous devez avoir 
ceci sur l’écran : 


UOLUME @ À 15? 3 


S:SOUND, M:MUSIC, P:PLAY, F':FIN? 





190 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








PLAY 

N:CANAL NOTE, B:CANAL BRUIT, F':FORME, 
D :DUREE® 

CANAL NOTE Q A 77 1! 

N'CANAL NOTE, B:CANAL BRUIT, F:FORME, 
D :DUREE® 





puis 1 Return 


On a tapé Return 
tout seul 





S:SOUND, M:MUSIC, P:PLAY, F:FIN? 


SOUND 1,300,3 





PLAY 1,2,0,0 


Voici le résultat du mélange des 3 canaux de son pur avec du bruit sur 
le canal 3, en travaillant sur ce canal avec la forme répétitive 3 et une durée 
de 500 ; 


S'SOUND, M:MUSIC, P:PLAY, F:FIN? 
PLAY 

N'CANAL NOTE, B:CANAL BRUIT, F:FORME, 
D 'QUREE? 

DUREE @ À 32767? 500 


S:SOUND, M:MUSIC, P:PLAY, F:FIN? 


MUSIC 1,4,1,5 
XMUSIC 2,4,5,5 


XMUSIC 3,4,8,0 
PLAY 7,4,3,500 


XSOUND 6,1200,0 


Mais surtout, ne vous arrêtez pas là : tâtonnez. 
Quand c’est bon notez la recette, et lorsque c’est franchement mauvais 
tapez F puis RUN pour obtenir le silence ! 


LE MOMENT MUSICAL 


191 





30 


EN RYTHME 


Un bruit bien cadencé peut marquer le rythme. Mélangez avec une note 
bien choisie et vous obtenez de la musique ! 

Le choix du rythme se fera en tapant un chiffre entre 1 et 7, quant aux 
notes on les trouvera sur la deuxième rangée de touches à partir du haut. 
Si vous les comptez, de Q à |, vous trouverez 12, c’est-à-dire exactement le 
nombre de demi-tons d’une octave. Le choix de celle-ci vous est laissé au 


début. 


19 CLS;PRINT"'EN RYTHME 2" 

20 DATA Q,U,E,R,T,Y,U,1,0,P,C,] 
30 DIM NC93) 

40 FOR C=65 TO 93 

5@ NCC)=] 

6Q NEXT C 

28 FORI=I TO 12 


8Q READ C$ 

98 NCASC(CH)I)=I 

100 NEXT I 

1@S : 

119 PRINT:PRINT'TEMPO : 1 À 27" 


12Q PRINT:PRINT'NOTE Q A J" 

130 INPUT'"QUELLE OCTAUE (@ A 2)";0 
148 SOUND 5,108,@ 

145 : 

15Q REPEAT 

16Q T$=KEYTS 


1/@ IF T$>"@" AND T$<"8" THEN PLAY 1,2 


» 3, IBBGXCUALCTS)+2) 

18Q IF T$>="A" AND T$<="]" THEN MUSIC 
1,0, NCASCCT#)),8 

198 UNTIL T$=CHR$C3) 





Exemple : 


REMARQUES 

20 — les 12 touches produisant une note 

30 — N fichier des notes 

40 à 60 — on met 1 pour chaque note, a priori. 
70 à 100 — … et on change les 12 prévues 

110, 120 — affichage des possibilités 

130 — choix de l’octave 

140 — préparation du bruit 


150 à 190 — répétition jusqu’à ce qu’on tape 
CTRL C 


160 — lecture du clavier au vol 


170 — choix d’un rythme pour le canal 1, la durée 
est de 300, pour 2 : 400 etc. 


180 — choix d’une note : une des 12 prévues, ou 
bien 1 


Choisissez un rythme de 1 (rapide) à 7 (lent) puis pianotez en utilisant 


les touches Q, W, .… P,[et ]. 


EN RYTHME © 


TEMPO : 1 À 7 


NOTE Q À ] 
QUELLE OCTAUE (8 À 7)? 4 





Ne vous gênez pas pour changer le volume dans l’instruction MUSIC 
(ligne 180) ou la période de SOUND (ligne 140) ! 


192 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





31 


MUSIQUE AU HASARD 


MUSIC 





1, 26, "MOUVEMENT NUMERO 


FOR M=1 TO 3 


Reposons-nous un instant en laissant le hasard créer une musiquette en 
trois mouvements : léger et aigu, moins aigu, puis plus posé et plus grave. 
Pour obtenir ce résultat, il faudra bien sûr forcer un peu la main au hasard ! 
Pour voir les différents mouvements, les notes seront affichées sur l’écran 
à la bonne hauteur. 

On laissera le choix entre deux octaves, en fixant la plus basse. La durée 
de chaque note sera la même pour les deux premiers mouvements, et le dou- 
ble pour le troisième. 


REMARQUES 
10 à 30 — un guide pour le hasard 
40 — réglage de la longueur de chaque mouvement 


70 — position horizontale des notes : 4 pour la 
première 


90 à 250 — boucle sur les mouvements 


100 — affichage du numéro du mouvement 


PLOT 18,26, STR$CM) 110 — lecture des valeur guides : plage et décalage 
READ PLAGE, DECAL, DM pour l’octave, durée maximum d’une note 


FOR K=1 TO L/DM 


120 à 230 — boucle pour ajuster la longueur d’un 


O= INT CRND(1 )XPLAGE ) +DECAL MENCNERL 


FOR I=1 TO 5 
D=RNDC1)XxDM+1 


130 — choix de l’octave pour cinq notes successives 


140 à 220 — boucle sur cinq notes 


N=INTCRNDC1)%x12)+1 
H=27=-(0-13*%6-N72 


PLOT X,H,"9" 
MUSIC 1,0,N,8 
WAIT D 

RX=AtTI 

NEXT I 

NEXT K 

WAIT S@ 

NEXT M 


PLAY 0,0,0,0 





150 — durée d’une note 

160 — valeur de la note 

170 — sa position verticale sur l’écran 

180 — on la ’’note’”” 

190 — on la joue 

200 — on la maintient 

210 — position horizontale de la prochaine note 
240 — séparation entre deux mouvements 


270 — fin : silence ! 


Exemple : 


Avec les trois instructions DATA données dans le texte du programme, 
voici ce que nous avons obtenu. La ’’photo”” prise avant la fin signale que 
le dernier mouvement était le troisième, et on a droit à un magnifique Ready 
en haut de l’écran puisque le programme n’utilise pas d’instruction PRINT. 


LE MOMENT MUSICAL 193 








MOUVEMENT NUMERO 3 





Modifiez les valeurs des DATA, en retouchant éventuellement à la ligne 
170 si les notes ne tiennent plus sur l’écran. 


194 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


REPONSES AUX QUESTIONS SUR LE CHAPITRE VIII 
1. Oui, à la condition que leur dernier paramètre, le volume, ne soit pas nul. 
2. MUSIC sert à créer des notes musicales, et ce, sur plusieurs gammes. 


3. C’est PLAY qui sert à mettre en service plusieurs canaux simultanément, et non 
MUSIC. 


4. Pour créer des bruits, il faut utiliser SOUND.. 
5. GET stoppe le programme et attend qu’une touche soit frappée. Ne confondez 


pas GET avec KEY$ qui, lui, fait lire le clavier au passage, sans arrêter le pro- 
gramme. 


CHAPITRE IX 


POUR REVISER 
CINQ PROGRAMMES UTILES 
OU DIVERTISSANTS 


A la fin des chapitres 4 à 8, vous avez trouvé plusieurs exemples de pro- 
grammes qui mettaient en pratique les nouveautés dévoilées dans le chapi- 
tre, sans faire appel aux notions traitées par la suite. 

C’est maintenant qu'il faut regrouper tout ce que vous savez en pre- 
nant comme support cinq programmes dans lesquels vous devriez retrouver 
des têtes connues ! Chaque fois, après avoir fixé l’objectif, et pour vous aider 
à concevoir par la suite vos propres programmes, nous analyserons le tra- 
vail en dégageant les grandes lignes. Et, comme précédemment, le texte du 
programme sera accompagné de remarques, et nous vous donnerons des exem- 
ples d'utilisation ! 


32 


MISE EN FORME : 


COMMENT AFFICHER PROPREMENT UN NOMBRE 





Vous vous êtes peut-être posé cette question : y a-t-il un moyen pour 
afficher un nombre représentant une somme d’argent en francs et centimes, 
au lieu d’avoir quatre ou cinq chiffres après la virgule comme ça peut arri- 
ver. On souhaite alors écrire (sur l’écran) selon un format imposé. 


Dans certains dialectes du Basic, ou dans d’autres langages, on peut trou- 
ver une instruction qui satisfait à ce besoin légitime. Mais le Basic de l’Oric 
ne connaît pas cette instruction, et il n’est pas le seul ! 


Il faut donc faire le travail, et on distingue deux méthodes : celle du 
tout numérique et celle du traitement de texte. La première méthode con- 
siste à arrondir la valeur en imposant le nombre de décimales : pour garder 
les 2 premiers chiffres après la virgule ; ce qui doit donner 3.52 dans 3,523 
on peut écrire 


INT(3.523+100)/100 


Mais au moment de diviser pour retrouver le bon ordre de grandeur, 
on a parfois des surprises : pour écrire 1 avec 5 décimales, 
INT(1x10A5)/10A5 donne 0.999999999 à cause de l’erreur sur 10AS ! Et 
même lorsque ça se passe bien, on ne maîtrise pas la place qu’occupe le résul- 
tat : elle dépend du nombre de chiffres à gauche de la virgule. 


196 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 











L’autre méthode est plus sûre et plus complète : elle consiste à se servir 
des fonctions de traitements de texte du Basic (LEFT$, MID$, RIGHTS, 
LEN). Elle est aussi plus lourde. 

Pour étudier les caractères qui composent un nombre, il faut transfor- 
mer celui-ci en chaîne de caractères avec la fonction STR$. Après avoir trouvé 
la place du point décimal, on peut maîtriser entièrement l’affichage des valeurs 
numériques) : nombre de décimales et nombre de caractères maximum utili- 
sés pour représenter les valeurs, y compris les espaces éventuels. Le programme 
qui suit est constitué schématiquement de deux parties : 


— mise en forme (lignes 9000 à 9210) 
— utilisation de cette mise en forme à titre d’essai (lignes 10 à 140). 


Il existe au moins deux cas pour lesquels ça ne marche pas : pour un 
nombre avec puissance de 10 (E..) et lorsque la dernière décimale conservée 
vaut 9 et que la suivante est supérieure à 4. Nous réglerons ce deuxième incon- 
vénient dans la seconde version du programme. 


18 CLS :PRINT :PRINT'"'AJUSTAGE D'UN NOMBRE" 
2@ INPUT'"UOTRE NOMBRE ‘“;N 

30 GOSUR 3000 REMARQUES 
4Q REPEAT 

50 PRINT:INPUT'NB DE CARACTERES ‘“ ;3NC 
60 INPUT'"NB DE DECIMALES ‘";ND 


20 — introduction de la valeur à mettre en forme 


30 — utilisation du sous-programme d’initialisation 


780 GOSUB Sa5a 40 à 100 — répétition jusqu’à l’abandon 

80 : 50 à 60 — introduction des caractéristiques de mise 
398 PRINT'RESULTAT ‘“;N$ en forme 

100 INPUT'"AUTRE MISE EN FORME CO/N)" RS 70 — utilisation du sous-programme de mise en 
119 UNTIL R$="N" PUS 

120 : 90 — affichage du résultat obtenu 

138 END 100 — question 

140 130 — fin 


9000 à 9030 — sous-programme d’initialisation 
ES="KXKKAKIRAX 9000 — chaîne servant de réservoir de blancs (9 


espaces): 
2$-"000200000" 


RETURN 9010 — réservoir d'étoiles 


9020 — réservoir de zéros 


9050 à 9210 — sous-programme de mise en forme 
N—NS$ 


N$=STRS$S(N) :L=LENCNS) : : 

9050 — la valeur numérique N est convertie en 
IF N>=Q THEN L=L-1:N$S=RIGHT$SCNS,L) chaîne de caractères sous le nom NS, L : nombre 
de caractères 


FOR C=]1 TO L 9060 — nombre positif : on rejette le caractère de 


IF MID$SCN$,C,;13="," THEN R=C :GOTO 9 gauche 
9080 à 9100 — boucle de recherche du point 


NEXT C 9090 — R représente la place du point, s’il existe, 
NS$S=N$+"," comptée à partir de la gauche 





9110 — le point n’existe pas : on l’ajoute à droite 


POUR REVISER CINQ PROGRAMMES UTILES OÙ DIVERTISSANTS 197 






















3128 L=L+l:R=L 
3130 : 
9148 IF ND=QG THEN NS$S=LEFTS$SCNS$,R-1) :GOTO 


3130 

3150 NS$S=N$+2$ 

3160 DES$S=MIDSCNS , R+ND, 1) 

9170 IF MID$SCN$, R+ND+1)2="S" THEN DES$=CH 


R$SCASCC(DES)+1) 

3180 N$=LEFTSCNS, R+ND-1)+DES$ 

3198 L=LENCNS) 

3208 IF L>NC THEN N$=LEFTS$SCES, NC) ELSE N 
$=LEFT$S(BS$S,NC-L)J+NS$ 

3210 RETURN 


Exemples : 






AJUSTAGE D’UN NOMBRE 
VOTRE NOMBRE ? 12.3456 






NB. DE. CARACTERES © 7 
NB DE DECIMALES ? 4 
RESULTAT 12,3456 

AUTRE MISE EN FORME CO/N)? 











NB DE CARACTERES ? 6 
NB DE DECIMALES 9? 4 
RESULTAT XXXXXX 

AUTRE MISE EN FORME CO/N)? 





NB DE CARACTERES ? 4 

NB DE DECIMALES ? 1 
RESULTAT 12.3 

AUTRE MISE EN FORME CO/N)? 









NB DE CARACTERES ? 2 
NB DE DECIMALES ? @ 





AJUSTAGE D’UN NOMBRE 
VOTRE NOMBRE ? -12.3456 


NB DE CARACTERES ? 6 
NB DE DECIMALES ?2 
RESULTAT -12,35 

AUTRE MISE EN FORME CO/N)?7 0 


REMARQUES 


9120 — il y a donc un caractère de plus et R mar- 
que le dernier 


9140 — on ne souhaite pas de décimales : il ne faut 
conserver que ce qui est à gauche du point 


9150 — on souhaite des décimales : on ajoute neuf 
zéros au bout du nombre pour satisfaire tous les 
besoins légaux (< =9 décimales) 


9160, 9170 —- arrondissement de la dernière déci- 
male à conserver, en tenant compte de la suivante : 
si celle-ci est supérieure ou égale à 5, on ajoute 1 
à la dernière décimale conservée 


9180 — troncature : on ne conserve que ND 
décimales 


9200 — le nombre de caractères nécessaires pour 
afficher la valeur est supérieur au nombre prévu 
(NO) : afficher NC étoiles, sinon, on complète à 
gauche par des espaces, si c’est nécessaire, afin de 
former une chaîne de NC caractères 



























RESULTAT 12 
AUTRE MISE EN FORME (CO/N)? 









NB DE CARACTERES ? 5 
NB’ DE DECIMALES ?.2 
RESULTAT XXXXX* 

AUTRE MISE EN FORME (O/N)? 0 


NB DE CARACTERES ? 7 
NB DE DECIMALES ? 2 
RESULTAT 
AUTRE MISE EN FORME CO/N)?7 N 


212399 














198 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








TABULATION AVEC CADRAGE A DROITE 


Nous allons illustrer la mise en forme de nombres en regroupant dans 
une même table un nombre, son carré, sa racine carrée et le sinus de ce nom- 
bre (représentant un angle exprimé en radians). La première partie de ce pro- 
gramme (lignes 10 à 150) gère les calculs, la tabulation et fait appel à deux 
sous-programmes (lignes 9000 à 9240) pour la mise en forme de chaque nom- 
bre à afficher. Ce principe s’applique à n’importe quelle tabulation. 

Il faut résoudre aussi le défaut signalé : 1.298 arrondi à 2 décimales 
devient 1.2: puisqu’on ajoute 1 au code du 9, on obtient le code des deux 
points ! Une solution consiste à repasser provisoirement à la valeur numéri- 
que pour faire cet arrondi avant de finir la mise en forme, comme on l’a 
déjà fait. 


CLS :PRINT :PRINT'TABULATION AVEC CADRA 


A DROITE" REMARQUES 

PRINT" * X72 SGRCX) SINCX)" 40 — utilisation du sous-programme d'initialisation 

PRINT 50 à 140 boucl ttant de fai ier | 
— boucle permettant de faire varier le 

GOSUB 9600 nombre contenu din x 

é 60 — préparation des données nécessaires au sous- 

FOR X=1 TO 9 progrmme de mise en forme, et utilisation de celui-ci 

N=X :NC=4 :ND=1 :GOSUB 93050 RENE 

PRINT N$; 70 — affichage du résultat de cette mise en forme 

N=X72 :NC=5 :ND=2 :GOSUB 93050 80 — même travail qu’à la ligne 60, pour le carré 

PRINT" "35N$ ; ob 

N=SQRCX)J:NC=6 :ND=49 :GOSUB 3250 90 — affichage du carré de X, mis en forme 


PRINT" "3Ns; 
N=SINCX) :NC=6 :ND=4 :GOSUB 9258 
PRINT" "3NS 
NEXT X 


100, 110 — idem pour la racine carrée de X 
120, 130 — idem pour le sinus de X 
150 — fin 


9000 à 9030 — sous-programme d'’initialisation 


9000 — chaîne servant de réservoir de blancs 


ES=UXXXXAXXXEXX (9 espaces) 


2$="b000000000" 
RETURN 


9010 — réservoir d'étoiles 


9020 — réservoir de zéros 


9050 à 9240 — sous-programme de mise en forme 


de N>NS$ 
N$S=STRS$S(N)I:L=LENCNS) 9050 — la valeur numérique N est convertie en 
chaîne de caractères sous le nom N$,L: nombre de 
IF N>=Q THEN L=L-1:N$=RIGHTS(NS,L) caractères 
: 9060 — nombre positif : on rejette le caractère de 
FOR C=]1 TO L gauche 
IF MID$CN$,C,1)3=".," THEN R=C:GOTO 9 9080 à 9100 — boucle de recherche du point 


NEXT C 
N$S=N$+", " 





9090 — R représente la place du point, s’il existe, 
comptée à partir de la gauche 


9110 — le point n'existe pas : on l’ajoute à droite 


9120 — il y a donc un caractère de plus et R mar- 
que le dernier 


POUR RÉVISER CINQ PROGRAMMES UTILES OU DIVERTISSANTS 199 








REMARQUES 


IF ND=G THEN NS$S=LEFTSCN$,R-1) :GOTO 
3190 9140 — on ne souhaite pas de décimales : il ne faut 


3150 N$=N$+2$ 


conserver que ce qui est à gauche du point 


“eu 9150 — haite des décimales : jout f 
9160 IF MID$SCNS » REND+19<"S THEN GOTO 92 zéros About de RoMbIe Do ar sHiéfalte (ous LS 
10 besoins légaux (< = neuf décimales) 
3178 N=UALCN$) 9170 à 9200 — arrondissement de la dernière déci- 
93180 NP=ABS(N)+12"(-ND) male à conserver, en tenant te la suivante : 
i celle-ci éri égale à 5, j 1 
9190 N$=STRSCSGNCNDXNP ) D dant dl ce 
9200 IF N>0 THEN N$=MIDSCNS »2) 9210 — troncature : on ne conserve que ND 
9210 N$=LEFTSCNS, R+ND) décimales 
93220 L=LENCNS) 9230 — si le nombre de caractères nécessaires pour 
= : fficher 1 l t éri b É 
323 IF LONC THEN NS-LEFTSCES,NC) ELSE N D ee 
PS=LEFTS(BS,NC-L)+N$ gauche par des espaces, si nécessaire, afin de for- 


mer une chaîne de NC caractères 


3240 RETURN 





La table obtenue est agréable à lire, et vous pouvez la remodeler en chan- 
geant les valeurs de NC et ND : 


TABULATION AVEC CADRAGE À DROITE 
* #72 SGRCX) SINCX) 


1.00 
4,00 
3,00 
16.00 
25.00 
36.00 
43,00 
64,00 
81.00 


. 0000 .8415 
.4142 . 380933 
. 2321 .1411 
. 0800 . 2568 
. 2361 . 3383 
. 44935 . 2234 
6458 , 65/0 
. 8284 . 38934 
. 0080 .4121 


1.0 
2.0 
3, Q 
4.0 
5,0 
6.0 
2,0 
8.0 
3.0 


ONNNNNE 





200 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





33 


CLASSEMENT ALPHABÉTIQUE 





La mise en mémoire d’un mot se faisant selon une codification norma- 
lisée (baptisée ASCII), la lettre A a une valeur inférieure à la lettre B, et ainsi 
de suite. Ceci conduit à un classement des codes correspondant à celui des 
lettres. De plus, la comparaison de deux chaînes de caractères, par exemple 
deux mots, est réalisée en Basic caractère par caractère : si le caractère de 
gauche est le même dans les deux chaînes, la comparaison porte sur le sui- 
vant, et ainsi de suite jusqu’à ce qu’une différence soit rencontrée. Si les deux 
chaînes n’ont pas la même longueur, la plus courte est inférieure à la plus 
longue. 

Grâce à tout ceci, le classement de deux mots, ou groupes de mots (l’es- 
pace compte alors), est possible au sens alphabétique : le classement se fera 
dans l’ordre croissant : ’’ ABC” est inférieur à *’ ABC’, et ABC” est infé- 
rieur à ’ABCD”’. Lorsqu'il y a plus de deux mots à classer, une méthode 
simple à appliquer consiste à chercher d’abord le mot qui doit venir en tête 
dans l’ordre alphabétique : c’est le plus petit lorsqu’on le compare aux autres. 
On l’échange alors dans le fichier de mots avec celui qui se trouvait en tête, 
et on recommence sans tenir compte du premier mot, qui est maintenant bien 
classé. Il suffit de s’arrêter lorsque les deux derniers mots viennent d’être 
échangés (si nécessaire). 


18 CLS:PRINT'CLASSEMENT D'UN FICHIER D 
E MOTS" 


20 
30 
40 
50 
6Q 
70 
80 


30 


INPUT'NOMBRE DE MOTS ‘" ;NM 


DIN MS$CNM) 

FOR N=1 TO NN 
INPUT "MOT" 3 M$ CN) 
NEXT N 


CLS :PRINT"'FICHIER CLASSE" :PRINT 


FOR T=1 TO NM-1 
N$=MS$CT):P=T 
FOR N=T+1 TO NM 


REMARQUES 

20 — introduction du nombre de mots 

30 — réservation de mémoire pour le fichier de mots 
40 à 60 — boucle d'introduction des mots 


80 à 160 — boucle permettant de trouver successi- 
vement les mots dans l’ordre croissant 


90 — hypothèse : le Tème mot est plus petit que 
les suivants, P indique la position du plus petit mot 


100 à 120 — boucle de recherche du plus petit mot 
compris entre le Tème et le dernier 


IF MSCNJ<N$ THEN N$=MS$CN) :P=N 


NEXT N 
M$CPI=MSCT) 
M$SCT)=NS 
PRINT N$ 
NEXT T 
PRINT MS$CNM) 





110 — si un mot plus petit est trouvé, on le loge 
dans N$ et on change le contenu de P 


130, 140 — échange 
150 — affichage du mot bien classé 


170 — affichage du dernier mot 


POUR RÉVISER CINQ PROGRAMMES UTILES OÙ DIVERTISSANTS 201 











Exemple : 


CLASSEMENT D'UN FICHIER DE MOTS 
NOMBRE DE MOTS ? 10 
MOT? POIRE 

MOT? POMME 

MOT? PAMPLEMOUSSE 
MOT? PECHE 

MOT? PRUNE 

MOT? ABRICOT 

MOT? FRAISE 

MOT? ORANGE 

MOT? KAKI 

MOT? FRAMBOISE 


FICHIER CLASSÉ 





Si vous préférez les 
fromages, ne vous 
gènez pas ! 


ABRICOT 
FRAISE 
FRAMBOISE 
KAKI 

ORANGE 
PAMPLEMOUSSE 
PECHE 

POIRE 

POMME 

PRUNE 






CLASSEMENT ALPHABÉTIQUE AVEC NOMBRES ASSOCIÉS 


Il est fréquent qu’on associe une ou plusieurs informations à chaque 
mot d’une liste. Lorsqu’on souhaite classer ces mots par ordre alphabéti- 
que, il ne faut pas séparer les informations qui s’y rattachent, et pourtant 
celles-ci ne doivent pas être prises en compte pour le classement. La méthode 
employée ici consiste à utiliser un fichier pour les mots et un fichier pour 
chaque information associée. Tout échange nécessaire dans le fichier de mots 
donnera lieu à un échange identique dans chaque fichier associé. Nous pren- 
drons le cas d’une seule information associée. 


202 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





10 
RS" 
28 
30 
40 


55 
68 
78 


CLS :PRINT'CLASSEMENT DE DEUX FICHIE 


INPUT'NOMBRE DE MOTS ‘“ ;NM 

DIM M$CNM),NBCNN) 

FOR N=1 TO NM 

INPUT"MOT" ;M$CN) 
INPUT'"NOMBRE " 3NBCN) 

NEXT N 

Ci S:PRINT"'RESULTAT DU CLASSEMENT" :P 


RINT 
80 FOR T=1 TO NM-1 
930 N$=M$CT):P=T 


100 
110 
120 
138 
140 
145 
150 
160 
178 






















CLASSEMENT DE DEUX FICHIERS 
NOMBRE DE MOTS ? 10 
MOT? END 

NOMBRE? 128 

MOT? EDIT 

NOMBRE? 123 

MOT? INUERSE 
NOMBRE”? 130 

MOT? NORMAL 

NOMBRE? 131 

MOT? TRON 

NOMBRE? 132 


fonctions du langage 


FOR N=T+1 TO NM 

IF MS$SCNI<N$ THEN N$=MS$CN) :P=N 
NEXT N 

M$SCPI=M$SCT) 

MSCTJI=NS$ 

NA=NBCT) :NBCT)J=NB(P) :NBCP)=NA 
PRINT NBCT),MS$CT) 

NEXT T 

PRINT NBCNM),M$CNN) 





Exemple : 


REMARQUES * 


20 — introduction du nombre de chaînes de 
caractères 


30 — réservation de mémoire pour le fichier des 
mots et des valeurs numériques 


40 à 60 — boucle d'introduction des informations 


80 à 160 — boucle permettant de trouver successi- 
vement les mots dans l’ordre croissant 


90 — hypothèse : le Tème mot est plus petit que 
les suivants, P indique la position du plus petit mot 


100 à 120 — boucle de recherche du plus petit mot 
compris entre le Tème et le dernier 


110 — si un mot plus petit est trouvé, on le loge 
dans N$ et on change le contenu de P 


130, 140 — échange de mots 


145 — échange correspondant pour les valeurs 
numériques 


150 — affichage du mot et du nombre classés 


170 — affichage pour le dernier mot 


Chaque mot du langage possède un code compris entre 128 et 255. On 
en trouve parfois la liste classée dans l’ordre croisant des codes, mais il serait 
souvent plus intéressant de l’avoir par ordre alphabétique : 








123 EDIT 
128 END 

130 INUERSE 
132 LORES 
131 NORMAL 





135 PLOT 
Ce n'est qu'un extrait 134 POP 
de Ja liste des mots et 136 PULL 





133 TROFF 
132 TRON 











RESULTAT DU CLASSEMENT 





























POUR RÉVISER CINQ PROGRAMMES UTILES OU DIVERTISSANTS 203 





34 


COURSE DE HAIES 





Pour entretenir les réflexes, rien de tel qu’une course de haies dans un 
fauteuil : en appuyant sur une touche du clavier au bon moment, le coureur 
sautera par dessus la haie. Mais si vous appuyez trop tôt ou trop tard, il 
renversera la haie. Le parcours comporte 12 haïes réparties sur quatre lignes 
droites. 


Ces haies seront représentées par la lettre I en position debout, et par 
le signe — lorsqu’elles ont été renversées. On définira deux nouveaux motifs 
pour simuler un coureur qui saute de temps en temps par dessous une haie, 
et qui court le reste du temps. Ces deux motifs prendront la place des cro- 
chets [ et ]. 


La frappe d’une touche suffit pour faire sauter le coureur, à condition 
de s’y prendre au bon moment, juste avant la haie. Si on tape trop tôt la 
tentative de saut est un échec, et le coureur n’aura pas le temps de récupérer 
avant la haie : il va la renverser ! 


CLS :PAPER G:INK 7 
REPEAT 
INPUT"'UITESSE C1 À 28)";U 


REMARQUES 
UNTIL U>Q AND UK«I1 L 
CLS :LORES 0 ae Een de la vitesse du coureur avec 
D=11-U | 
NH=0 :N=0 :T=Q 60 — D : délai réglant la vitesse 
H$="I 70 — NH : nombre de haies, N : nombre de fou- 
. lées depuis la dernière haie, T : indicateur de 
. tentative 
PLOT 1,11,"@ HAIE RENUERSEE" 


PLOT 23,11,'"UITESSE"+STRS$S(U) 
GOSUB 370 

PLOTO,2, "DEPART" 
PLOT24, 10, "ARRIVEE" 

FOR L=3 TO S STEP 2 

PLOT 12-L,L,H$+H$+H$ 

NEXT L 

WAIT 200 


90, 100 — tableau d’affichage 


110 — utilisation du sous-programme de définition 
des deux motifs ”’coureur’? 


120 à 160 — dessin du parcours 





204 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








130 FOR L=3 TO S STEP 2 

208 FOR C=-@ TO 31 STEP 2 

218 PLOT C,L,"]" 

228 WAIT D 

239 PLOT C,L," " 

240 K=@:N=N+2 

250 T$=KEYS 

260 IF T=Q@ AND N=18 AND T$@'"" THEN L= 
L-1:k=] 

270 IF CN<1Q@) AND CT$<>"") THEN T=1 
280 WAIT D 

298 PLOT C+1,L,"C" 

300 IF N=19 THEN GOSUB 469 

310 IF CK=@) AND (N<>@) THEN WAIT D:PL 
OT C+],L," " 

320 IF K=]1 THEN WAIT D'PLOT C+l,L," "“: 
L=L+]1 

330 NEXT C 

34Q@ NEXT L 

35@ END 


DATA 8,28,8,29,42,24,20,34 
DATA 8,28,8,29,42,40,20,2 
FOR CO=91 TO 93 STEP 2 

FOR I=Q@ TO ? 

READ A 

POKE 46080+COx8+I,A 

NEXT I 


NEXT CO 
RE TURN 


IF K=1 THEN RETURN 

PING 

NH=NH+ 1 

FLOT: CET Ls "=" 

PLOT G@,11,STRSCNH) 

IF NH=2 THEN PLOT 8,11,"S RENUERSE 


RE TURN 








REMARQUES 
180 — le signal du départ 


190 à 340 — boucle de parcours des 4 lignes droi- 
tes (positions sur l'écran : 3, 5, 7, 9) 


200 à 330 — boucle de parcours d’une ligne droite 
210 — le coureur est dans une position 


220, 230 — pause réglant la vitesse : effacement du 
coureur 


240 — K indique que le coureur vient de sauter : 
0= non, 1=oui 


250 — frappe de touche ? 

260 — le coureur atteint une haie et on n’a pas 
appuyé sur une touche trop tôt : si on appuie main- 
tenant, le saut va avoir lieu 

270 — on désarme T que l’on réamorce aussitôt en 
cas de frappe de touche avant d’avoir atteint une 
haie 

280 — pause 


290 — autre position 


300, 310 — si le coureur ne vient pas de sauter et 
ne se trouve pas sur une haie, on l’efface 


320 — si le courant vient de sauter, il faut l’effa- 
cer et le faire redescendre ! 


370 à 450 — sous-programme de définition des 2 
motifs ’’coureur’” 


370, 380 — description des motifs 


390 à 440 — boucles de lecture de cette description, 
touches [ et ] 


460 à 530 — sous-programme de renversement 
d’une haie 


460 — remise à zéro du nombre de foulées depuis 
la dernière haie et de l’indicateur de tentative 


470 — si le coureur passe au-dessus, on ne touche 
pas la haie 


480 — la cloche 

490 — on ajoute 1 au nombre de haies renversées 
500 — renversement 

510 — affichage du score 


520 — à partir de la deuxième haie renversée, il faut 
le pluriel 


Faites un essai avec la vitesse 1 pour commencer. Ce n’est pas si simple : 


POUR RÉVISER CINQ PROGRAMMES UTILES OÙ DIVERTISSANTS 205 








DEPART 


Avant le départ. 


Q HAIE RENUERSEE 


Le coureur s’élance. 


DEPART 


La première haie est franchie. 
Q HAIE RENUERSEE 


DEPART 


Le coureur s’est déconcentré et 
a renversé 4 haies ; il approche de la 
sixième. 


Q HAIE RENUERSEE 


DEPART 


4  HAIES RENUERSEES 





I 
ARRIUVEE 
UITESSE] 


I 
ARRIVUEE 
UITESSEN 


I 
ARRIUVEE 
UITESSE] 


I 
ARRIUVEE 
UITESSEI 


206 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








DEPART 


C’est l’arrivée : il n’y a pas eu 
d’autres chutes. 


ARRIUVEE 
4  HAIES RENUERSEES UITESSE] 








POUR RÉVISER CINQ PROGRAMMES UTILES OÙ DIVERTISSANTS 207 








35 


L’'ARDOISE MAGIQUE 





L’Oric a un graphisme suffisamment fin pour inciter à l’utiliser comme 
ardoise. Au déplacement classique dans les quatre sens, nous ajouterons le 
tracé de segment et la possibilité de lever le ’’crayon”’. 


HIRES 
A=1:Xx=120:Y-100 
PRINT'"ARDOISE MAGIQUE" 


REPEAT 


REPEAT 
CURSET X,Y,2:WAIT 1:CURSET X,7Y,2 


T$=KEYS | 
UNTIL. T$ <>" 


C=ASCCT$) 

IF T$="E" THEN A=Q 
IF T$="A" THEN A=1 
X=X+(C=8)-(CC-8) 
Y=Y-(C=12)+(C=11) 
IF x<8 THEN x=0 

IF X2233 THEN X=233 
IF Y<Q THEN Y=0 

IF Y>199 THEN Y=193 
CURSET %X,Y,A 

UNTIL C=3 


On peut aussi 
remplacer ces 2 lignes 
par 90 GET T$ 





Mode d’emploi : 


REMARQUES 


20 — crayon baissé, position horizontale et verti- 
cale du crayon 


50 à 220 — répétition jusqu’à ce qu’on tape 
CTRL-C 


70 à 100 — attente d’une frappe de touche 

80 — la pointe du crayon clignote 

90 — T$ contient la dernière frappe de touche 
100 — pas de touche frappée : on en attend une 
120 — CS : code de la touche frappée 

130 — on efface 

140 — on trace 


150, 160 — selon la touche enfoncée, on prépare 
le déplacement du crayon en 


170 à 200 — rejet des positions horizontales et ver- 
ticales situées hors de l’écran 


210 — marquage ou effaçage du point 


220 — à suivre ! 


Après avoir tapé RUN, un point blanc apparaît au centre de l’écran ; 
le crayon est prêt à tracer si l’on appuie sur l’une des flèches. 
Pour lever le crayon, taper E, et pour l’abaisser, taper A. 


Le programme n’a pas de fin naturelle ; il suffit de taper CTRL C pour 
en avoir raison. Si vous êtes satisfait de votre œuvre, n’oubliez pas que vous 
pouvez la conserver sur cassette et lui donner un nom grâce à : 


CSAVE IMAGE”, A40960, E49120 pour enregistrer à vitesse élevée, 


ou CSAVE IMAGE”, A40960, E49120, S pour la petite vitesse. 


208 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





10 HIRES:INK 7 





Comment améliorer cette ardoise 


Avec la version que nous venons de donner, il est difficile de tracer des 
obliques, et lorsqu’on se déplace sans tracer, c’est toute une gymnastique 
de ne pas effacer ce qui existe déjà. 

Nous allons offrir quatre possibilités supplémentaires : 


— garder les points allumés 

— se déplacer rapidement 

— mettre en mémoire la position d’un point 
— relier ce point au point actuel. 


Vous pouvez même changer de couleur en cours de route. Devant tou- 
tes ces possibilités, vous saurez où vous en êtes grâce à un tableau de bord. 


20 A=I:U=I:X=120:Y-100:XM-120:YM=100 
30 PRINT"ARDOISE MAGIQUE" :PRINT"'POINTS À 


48 : 
5Q REPEAT 
68 : 

20 REPEAT 


LLUMES, UITESSE LENTE" REMARQUES 


20, 30 — au départ ! 


50 à 420 — répétition de tout ce qui suit jusqu’à 
ce qu’on frappe CTRL C 


70 à 100 — attente d’une frappe de touche et cli- 


80 CURSET X,Y,2:UAIT 1:CURSET X,YT,2 nat n Din 


3G T$=KEYS$ 

100 UNTIL T$o"" 
119 

128 C=ASCCTS$) 
130 


120 — C : le code de la touche 
140 à 200 — étude du choix 
140, 150 — points éteints ou allumés 


160 — garder les points existants, mais ne pas en 


140 IF T$="E" THEN A=0 allumer d’autres 

150 IF T$=-"A" THEN A=1 170 — mise en mémoire de la position actuelle 
160.16 T$= "6" THEN has 180, 190 — vitesse rapide ou lente 

170 T$="M" THEN XM=X : YM=Y 


T$='"'R" 





POUR RÉVISER CINQ PROGRAMMES UTILES OÙ DIVERTISSANTS 209 








IF T$="L" THEN U=1 
20@ IF T$="T" THEN DRAN XM-X, YM-Y, A 
210 : 
220 IF C>=48 AND C<=55 THEN INK C-48 
230 : REMARQUES 
RAGE CCE BTE 292 200 — relier le point actuel au point mémorisé (pour 
25Q Y=Y-UX((C=1D)-(C=<11)) allumer ou effacer un trait) 
260 IF X<12 THEN X=12 220 — choix de la couleur 
278 IF X>239 THEN X=239 
280 IF Y<@ THEN Y=0 
290 IF Y>199 THEN Y=199 


300 : 310 — nouveau positionnement 


240, 250 — positions horizontale et verticale 


260 à 290 — butées gauche, droite, haute et basse 


310 CURSET X,T,A 330 à 400 — tableau de bord mis à jour, sur deux 
32@ : lignes en bas de l’écran 
338 CLS 

34@ PRINT'POINTS UITESSE MEMOIRE POSI 

TION" 

350 IF THEN PRINT'ETEINTS ‘"; 

360 IF A: THEN PRINT'ALLUMES "; 

370 IF À: THEN PRINT'GARDES ‘; 

380 IF THEN PRINT'LENTE "; 

330 IF THEN PRINT'RAPIDE ‘"; 

420 PRINT SPCC3) ;XM; YM;SPCC3) ;X3Y 

419 

42Q UNTIL C=3 





Mode d’emploi : 


Pour se déplacer, c’est toujours les quatre flèches, mais si vous avez 
choisi la vitesse rapide, le point sautera cinq fois plus vite qu’avant. Pour 
tracer un trait dans n’importe quelle direction placez-vous à une des extré- 
mités, mémorisez votre position en tapant M, déplacez-vous vers l’autre extré- 
mité puis demandez le tracé en tapant T. Si c’est une oblique que vous vou- 
lez, déplacez-vous sans rien tracer en tapant G avant de partir, mais il fau- 
dra penser à rallumer (A) avant de tracer. 


Pour effacer un point tapez E et pour effacer un trait tapez également 
E avant T. 


Si vous voulez changer de couleur, il suffit de taper un des chiffres 0, 
1,... 7 selon le code convenu pour l’Oric. 


Les positions 0 à 11 posent des problèmes quand on fixe la couleur. 
Nous ne les utiliserons pas. 


210 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 

















ARDOISE MAGIQUE 


Au départ : POINTS ALLUMES, UITESSE LENTE 









Le point 120, 100 
vient d'être 
mémorisé 












POINTS UITESSE MEMOIRE POSITION 
ALLUMES LENTE 12Q 100 121 120 









Tapez R 
pour accélérer 









POINTS -VFTESSE 
ALLUMES RAPIDE 


MEMOIRE POSITION 
166 190 166 100 








Tapez E 
pour éteindre 








POINTS UITESSE MEMOIRE POSITION 
ETEINTS RAPIDE 166 100 166 75 









POINTS UITESSE MEMOIRE POSITION 
GARDES  LENTE 12@ 100 138 75 





Quelques possibilités de tableau de bord 













.. et G 
pour garder 





POUR RÉVISER CINQ PROGRAMMES UTILES OU DIVERTISSANTS 211 





ORGUE À MÉMOIRE 





Il est facile de produire un son en utilisant l’instruction MUSIC : on 
obtient chaque fois un son pur avec une graduation par demi-ton. Il est alors 
tentant de transformer le clavier en pupitre d’orgue, en toute modestie ! 

Nous allons le faire sur deux octaves, à un ton près : 


Q WE R T Y 


chehenar certe pre 


mi fa fa # sol lab la si si do do # 
A S D F G H J K L 
CM EP OL EME ONE Es 
sol lab la siP si do do # ré mib 
Z X C V B N M 
ESRRPESRRRSERRE 
do do # ré mib mi fa fa # 

espace 

| 
silence 


Au fur et à mesure que vous pianoterez, les notes apparaîtront sur l’écran 
à leur hauteur respective, la plus basse (touche Z) en bas de l’écran. 


1Q@ CLS :PRINT'UN CLAUIER MUSICAL" REMARQUES 
22 INPUT"UOLUMET ;U 20, 30 — introduction du volume et de l’octave 
3Q INPUT'"OCTAUE BASSE" ;0B basse 
40 DATA 2,X,C,;,U,B,N,MA,S,D,F,G;H,J,K; 40 — les lettres selon leur place sur le clavier de 
WE, R;T, YU, 1,0:P bas en haut et de gauche à droite 
50 DIM N0O(9a),0C(C90@) 50 — réservation pour les fichiers des notes et des 
6A N-1:0-0B ur 
?7Q FOR L=1 TO 26 60 — note et octave basses 
8Q READ C$:C=ASCCCS) 70 à 120 — boucle de correspondance entre les 
9Q NO(C)J=N:O0C(C)=0 codes des lettres et les sons 
108 N=N+I 80 — C : code d’une touche, selon la disposition 
fournie par l’instruction DATA 
119 IF N=13 THEN O=0+]:N=1 
90 — mémorisation de la note et de l’octave 
128 NEXT L correspondante 


125 


110 — passage à l’octave supérieure 





212 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 





REMARQUES 
F=iji:CLS 140 à 190 — répéter ce qui suit jusqu’à ce qu’on 
REPEAT frappe CTRL C 
GET T$ 150 — attente d’une frappe de touche 
IF F=39 THEN F=1:CLS 160 — changement de ’’page écran”” 
IF T$>="A" AND T$<="2" THEN GOSUB 170 — si on a frappé une lettre : musique 


F=F+1 


UNTIL T$-CHR$(3) 
END 


310 à 350 — sous-programme de production d’un 
son 


T=ASCCTS$) 

MUSIC 1,0CCT),NOCT),U 
H=27-(COC(T)-0B)X12-NOCT) 
PLOT F, H,"9" 330 — hauteur de ce son, sur l’écran (en bas : grave, 


en haut : aigu) 
RE TURN 


310 — code de la touche 


320 — le son 


340 — affichage d’un point d’exclamation au bon 
endroit sur l’écran 





Choisissez le volume et l’octave basse : 


UN CLAUIER MUSICAL 
VOLUME? 4 
OCTAUE BASSE? 3 





et composez ou reproduisez un air connu ! 





VERSION AVEC MEMOIRE 


Pour accroître l’intérêt du jeu tout en gardant un programme simple, 
nous allons mémoriser les hauteurs de chaque note, de façon à ré-écouter 
un air que l’on aura composé au clavier. On pourra fixer la durée. 


18 CLS:PRINT"'CLAUIER MUSICAL À MEMOIRE 


20 INPUT'"UOLUME" ;U 





30 

40 

L,Q 
5@ 

55 

60 

?@ 

80 

30 

100 
11 
120 
125 
130 
135 
140 
150 
160 
170 
175 
180 
HEN 
190 
200 
210 
220 
230 
240 
245 
250 
HEN 
255 
260 
270 
275 
280 
230 
300 
310 
328 
330 
340 
350 


POUR RÉVISER CINQ PROGRAMMES UTILES OU DIVERTISSANTS 213 





INPUT'"OCTAUE BASSE" ;0B 
DATA 2,X,C,U,B,N,MA,S;D;F,G;H,J,K; 
WE, R:T,Y,U,1,0,P 
DIM NOCS3G),0C(C30) 
DIM T$CS5,33) 
N=1 :0=0B 
FOR L=1 TO 26 
READ C$:C=ASCCCS$) 
NOCCJ=N:OCCC)=0 

N=N+1 

IF N=13 THEN 0=0+1:N=] 
NEXT L 


M=1 :F<Q:CLS 

PLAY 1,0,0,0 

REPEAT 

GET TT$ 

IF TT$="Q" THEN GET TT$:PLOT F,H," 
ELSE F=F+1 

IF F=39 THEN M=M+Il:F=1:CLS 
T$CM,FI=TTS 


IF T$CM,F)>="A" AND T$CM,FJI<="2" T 


GOSUB 300 
UNTIL TT$=CHR$(3) 


MM=M:FF=F 
M=1 :F=1 :CLS 

REPEAT 

IF F=39 THEN M=M+1:F=1:CLS 

IF T$CM,F)=" " THEN MUSIC 1,@,1,0 


IF T$CM,F)>="A" AND T$CM,FJ<="2" T 


GOSUB 38 

WAIT 28 

F=F+1 

UNTIL M=MM AND F=FF 


PLAY 8,0,0,0 
END 


T=ASCCT$CM,F)) 

MUSIC 1,0CCT),NOCT),U 
H=27-COCCT)-0BJX12-NOCT) 
PLGT FH 

RETURN 





REMARQUE 


55 — réservation pour les frappes de touches à 
enregistrer 


REMARQUES 
130 — premier morceau 


135 — silence 


150 — attente d’une frappe de touche 


160 — effacement d’une erreur si on raye zéro, 
sinon passage au prochain son 


170 — passage au morceau suivant 
175 — mémorisation de la touche 


180 — production du son si c’est une lettre qui a 
été frappée 


210 à 270 — écoute de l’air enregistré 


210 — MM : le nombre de morceaux, FF : le nom- 
bre de notes du dernier morceau 


220 — premier morceau 


230 à 270 — répéter ce qui suit jusqu’au dernier 
son enregistré 


240 — passage au morceau suivant 
245 — un silence 
250 — un son 


255 — durée de ce son ou de ce silence : 2/10 de 
seconde 


280 — arrêt de la dernière note 


Après le choix du volume et de l’octave basse. 


214 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 








CLAVIER MUSICAL À MEMOIRE 
VOLUME? 1 


OCTAUE BASSE? 2 





Vous pouvez pianoter, avec droit à l’erreur (en tapant zéro vous gom- 
mez la fausse note). Mais il n’y a pas de sécurité sur la longueur de l’air enre- 
gistré : ne dépassez pas 5 morceaux. 





La première écoute est gratuite, pour les suivantes il faudra faire GOTO 
220. 

Et si vous le souhaitez vous pouvez même changer le volume et décaler 
l'air entier vers les graves ou les aigüs d’une ou plusieurs octaves, sans reta- 
per les notes : 


V=8 
OB=S 
GOTO 220 


Les programmes que nous vous avons donnés avaient comme but de 
vous mettre en route. Vous devez pouvoir maintenant écrire les vôtres et tirer 
profit de ceux que vous trouverez dans le commerce en les comprenant et 
en les modifiant. 


ABS 
AND 
ASC 


ATN 
CALL 
CHAR 


CHRS 
CIRCLE 
CLEAR 


CLS 
CLOAD 
CONT 


cos 
CURMOV 
CURSET 


CSAVE 
DATA 
DEEK 


DEF FN 
DEF USR 
DIM 


DOKE 
DRAW 
EDIT 
ELSE 
END 
EXP 


LE BASIC DE L’ORIC : 
LES MOTS RESERVES 


Voici la liste des instructions Basic utilisées par l’Oric. Nous avons marqué en gras 
celles qui ont été étudiées dans ce livre, car on ne les a pas toutes passées en revue. 
En effet, on a abandonné certaines fonctions mathématiques, ainsi que des instruc- 
tions spécifiques au langage « machine ». Pour tout cela, vous pourrez maintenant 
vous reporter au manuel d'emploi de l’Oric qui est à la fois presque complet (lui 
aussi !) mais malheureusement généralement hermétique. Mais vous savez mainte- 
nant utiliser l’essentiel des commandes, et vous ne serez plus guère désorienté. 

Si vous voulez retrouver la page à laquelle chaque instruction étudiée est dévelop- 
pée, reportez-vous à la liste des « Mots clés » qui la précise. 

Toutes ces commandes Basic sont des « mots réservés ». Vous n'avez pas le droit 


de les employer comme noms de variables, ni même les inclure dans des noms de 
variables. 


EXPLODE LOG RESTORE 
FALSE LORES RETURN 
LPRINT RIGHTS 
FILL 
FN MIDS$ RND 
FOR... TO MUSIC RUN 
NEW SCRN 
FOR... TO... STEP 
FRE NEXT SGN 
GET NOT SHOOT 
ON... GOSUB SIN 
GOSUB 
GOTO ON... GOTO SOUND 
GRAB OR SPC 
PAPER SQR 
HEXS$ 
HIMEM PATTERN STEP 
HIRES PEEK STOP 
PI STRS$ 
IF... THEN 
IF... THEN... ELSE PING TAB 
INK PLAY TAN 
PLOT TEXT 
INPUT 
INT POINT TROFF 
KEY$ POKE TRON 
POP TRUE 
LEFTS$ 
LEN PRINT UNTIL 
LET PULL USR 
READ VAL 
LIST 
LLIST RELEASE WAIT 
LN REM ZAP 


REPEAT 


216 


PRATIQUE DE L'ORIC 1 ET 36 PROGRAMMES 


LE CODE ASCII 


ASCII signifie « American Code for Information Interchange », soit code améri- 
cain pour l’échange d’informations. Chaque frappe, simple ou combinée, trouve sa 
traduction dans ce code. Voici ce code, dans sa normalisation officielle, c’est-à-dire 
sans les caractères graphiques personnels à l’Oric. 


CODIFICATION A,S C.I.Iï. 
Espace 64 96 

65 9? 

66 38 

6? 99 

68 
69 
78 
73 
?2 
23 
24 
25 
76 
22 
278 
23 
80 
81 
82 
83 
84 
85 
86 
87 
88 
89 
90 
91 
92 
33 
94 
95 


TO +MDmANTY à» 


ZAC I OO 1 M OU NO W D © 
— X €. 


Æ 


/ 
Q 
1 
2 
3 
4 
S 
6 
? 
8 
3 


DU /nmM<XE EE CE 10 WOOD VO 
è —--2NNX £E CC HW 7 NA VU O©O 7 3 





LES CARACTÈRES GRAPHIQUES DE L’ORIC 


Lorsqu'on choisit le jeu de caractères numéro 1, certains codes (32 à 95) fournissent 
des caractères utiles pour créer des images graphiques basse résolution. Voici ces 64 


caractères, agrandis afin de situer les zones d’encre par rapport au fond. 


5 
È 
© 
3 
T 
3 
TZ 
à 
S 


Un 0 représente 
un point éteint 





Sd 
& L 
ERS 
SES 
ER 
à © Ÿ 
D + LL 
SL 3 

rs) 
AE 
SSS 





MOTS CLÉS 


En marge du texte, nous avons encadré des « mots clés » importants. La liste vous 
en a été fournie, chapitre par chapitre, au début de chacun d'eux. Les voici mainte- 
nant par ordre alphabétique, avec renvoi à la ou les pages où ils sont définis. 


A 

Accord musical, 222 
Adjonction d’une ligne, 46 
Affectation, 40 
Alimentation, 8 

AND, 145 

Annulation d’une ligne, 34 
Attributs, 147 

AZERTY, 10 


B 

Barres de couleur, 105 

Basic, 12, 13 

Bataille galactique, 85 

Boucles, 73, 80, 82 

Branchement de l’Oric— 1, 7 
Branchement conditionnel, 145 
Branchement inconditionnel, 54, 145 
Byte, 14 


C 

Canaux des sons, 217 

CAPS, 16 

Caractère, 14, 39 

Caractères double hauteur, 148 
Caractères graphiques, 115 

Carré en LORES 9, 110 

Cellules mémoires, 14 

Cercles à géométrie variable, 139 
Chaînes de caractères, 39, 42 
Chaîne vide, 42 

CHAR, 140 

Chargement d’un programme, 21 
Chiffre 9 et lettre O, 13 

CHRS, 56 

CHRS(8), 117 

CHRS$(9), 117 

CIRCLE, 137 

Clignotement, 148 

CLOAD, 21 

CLS, 54 

Code ASCII, 56 

Concaténation de chaînes, 43 
Connexion d’un magnétophone, 19 
Constante, 40 

Constante chaîne, 40 

Constante numérique, 40 
CONT, 55, 116 


Couleurs, 78 
Couleurs avec PLOT, 103 
CSAVE, 25 
CSAVE AUTO, 51 
CTRL, 16 
CTRL/A, 58 
CTRL/C, 53, 116 
CTRL/D, 148 
CTRL/F, 43 
CTRL/G, 82 
CTRL/H, 38 
CTRL/I, 38 
CTRL/J, 38 
CTRL/K, 38 
CTRL/L, 38 
CTRL/M, 38 
CTRL/N, 44 
CTRL/Q, 111 
CTRL/T, 16 
CTRL/X, 34 
CURMOV, 135 
CURSET, 135 
Curseur, 11 


D 

DATA, 121, 122 

Décomptage avec FOR... TO., 78 
DEEK , 151 

Défilé des couleurs, 123 

DEL, 11 

Démarrage à chaud, 24 
Démarrage à froid, 24 
Démarrage automatique, 29 
DIM, 127 

Division, 36 

DOKE, 151 

Double hauteur, 207 
Double-point, 76 

DRAW, 137 

Duplication d’instructions, 109 


E 

Ecran haute résolution, 135 
Edit, 59 

Effacement arrière, 11 
Elévation à puissance, 37 
Effacement de la mémoire, 49 
Effacement de l’écran, 38 


220 


Effacement d’une ligne, 44 
Effacement programmé de l’écran, 54 
ELSE, 145 

Emboîtage de boucles, 80 

END, 112 

Entiers, 132 

Enveloppe des sons, 218 

Error, 11 

Etoiles, 111 

EXPLODE, 83 


F 

FILL, 141 

Format de l’écran, 16 
FOR... TO, 73 


G 

GET, 226 

GOSUB, 113 

GOTO, 52 

Graphique basse résolution, 105 
Grille graphique basse résolution, 102 
Guillemets, 31 


H 
Haute résolution, 133, 135 
HIRES, 106, 133 


I 

IF... THEN, 144 

IF... THEN... ELSE, 200 
INK, 78 

INPUT, 50 

Instructions multiples, 76 
INT, 132 


K 
KEY$, 146 


L 

Langages, 12 

Lecture d’une touche, 146 
LEFT$, 67 

LEN, 67 

Lignes de couleurs aléatoires, 142 
Lignes doublées, 148 
Ligne logique, 15 

Ligne physique, 24 

LIST, 47 

Listage partiel, 57 
LORES, 106 

LORES 9, 106 

LORES 1, 114 


M 

Majuscules, 16 
Mémoires centrales, 13 
Mémoires externes, 14 
Mémoires internes, 13 
Mémoires mortes, 14 
Mémoires, 14, 49 
Mémoires périphériques, 14 
Mémoires vives, 14 
Messages d’erreur, 49 
Microprocesseur, 13 


PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Microsoft, 13 

MIDS$, 68 

Minuscules, 16 

Mise en service, 9 
Mode direct, 31, 35 
Mode programmé, 47 
Mode texte, 101 
Modes graphiques, 101 
Modification d’une ligne, 58 
Mots réservés, 42 

Mot transformé, 129 
Mouvement, 116 
Multiplication, 36 
MUSIC, 213 


N 

NEXT, 73 

NEW, 49 

Nombres aléatoires, 83 
Noms de variables, 71 
NOT, 145 

Notation scientifique, 94 
Notes musicales, 214 
Numérotation des lignes, 45 


O 

Octet, 14 

Opérateurs relationnels, 145 

OR, 145 

Organigramme, 52 
Organigramme de FOR... TO, 74 


P 

PAPER, 78 

PATTERN, 139 

Pas dans FOR... TO, 76 
PEEK, 152 

Période avec SOUND, 224 
PING, 82 

PLAY, 213, 217 

PLOT, 102 

POINT, 140 

Points d’affichage, 135 

Point décimal, 36 

Point d'interrogation pour PRINT, 34 
Point-virgule, 35 

POKE, 152 

Pour sauter une ligne, 95 
PRINT, 32 

Prise Péritel, 8 

Programme de conversion, 50 
Programme principal, 112 


Q 
QWERTY, 10 


R 

Racine carrée, 37 

RAM, 21 

READ, 14 

REDO FROM START, 53 
Règles avec les boucles, 82 
Ré-initialisation, 23 

REM, 79 

Remarques, 78 
Remplacement d’une ligne, 48 


MOTS CLÉS 





REPEAT UNTIL, 144 
Répétition des touches, 12 
RESET, 24 

RETURN, 17, 32, 113, 130 
RIGHTS, 67 

RND, 83 

RND(8), 86 

RND(- N), 86 

Rôle des guillemets, 35 
ROM, 14 

RUN, 46 

RUN numéro de ligne, 111 


S 

Sauter une ligne, 55 
Sauvegarde d’un programme, 25 
SCRN, 129 

SGN, 124 

SHIFT, 12 

SHOOT, 83 

Sonorisation des touches, 43 
Sons, 82 

SOUND, 213, 224 
Sous-programme, 112 

SQR, 37 

STEP, 76 

STRS, 69 

STOP, 112 


221 


Suppression d’une ligne, 48 
Suppression du curseur, 111 
Symbole d’affectation (=), 40 
Symbole de concaténation, 43 
Symbole dollar, 39 

Syntaxe, 35 

SYNTAX ERROR, 12 


T 

Temporisation, 59 
TEXT, 101, 134, 135 
Traits en LORES 9, 108 


V 

VAL, 69 

Variable, 40 

Variable chaîne, 40 
Variable numérique, 40 
Virgule dans un PRINT, 37 
Virgule décimale, 36 
Vitesse lente, 22 

Volatilité des mémoires, 14 


W 

WAIT, 59 
Z 

ZAP, 83 


Zéro et lettre O, 36 


TABLE DES MATIÈRES 


AVAnRtEPropOS 5. séries enr dei nasale seen des des e 
Chapitre I — Pour faire connaissance avec l’Oric ................... 
1. L’Oric — 1 et ses branchements ...................... 
2. Misé-en service :.35::..2 4 iuesttsess com lite 
3. Qu'est-ce que le Basic ? ............................ 
4. Microprocesseurs et mémoires ...................... 
5; Clavier ét ÉCraN ft. sem ss o ss ta soahae sites eue 


Chapitre II — Magnétophone et cassettes de programmes ............ 
l: Le magnétophône lues en date ennedes es 
2. Chargement d’un programme ....................... 
3. Sauvegarde d’un programme ....................... 
4. Les règles du chargement ........................... 


Chapitre III — L’ordinateur en « mode direct » .................... 
1. L’instruction PRINT .............................. 
2. Premiers calculs .................................. 
3. Point-virgule et virgule ............................ 
4, Variables et constantes ............................. 
5. Chaînes de caractères .............................. 


Chapitre IV — Le mode programmé .............................. 
. Numérotation des lignes ........................... 
Les COrreCHIons 2.52 ee ei nn te 
. Effacement de la mémoire et de l’écran ............... 
. Quelle est la vitesse du bateau ? ..................... 
. L'ordre d’entrée INPUT ........................... 
. Et si l’on recommençait ? .......................... 
. Effacement programmé de l’écran ................... 
sLe-coder ASCIE Anne de termes 
LÉO. reset ae de oem et 


© 00 I Où Ua BR W ND 


Programmes 
1. Une addition qui n’en finit pas 
(CLS, INPUT, PRINT, GOTO, WAIT) ....... 
2. Un chronomètre digital 
(CLS, PRINT, WAIT, GOTO) ............... 
3. Caractères et codes : la norme ASCII 
(CLS, CHRS, ASC, PRINT, GOTO, WAIT) 
. L’initiale d’un mot (LEFT$, LEN) ............ 
. Une tête à queue verbale (MIDS) .............. 
. Un compte rond (STR$, VAL) ................ 


DU BR 


61 


65 


68 
69 


TABLE DES MATIÈRES 


Chapitre V — Couleurs et sons programmés ....................... 73 
1. Boucles avec les ordres FOR... NEXT ................ 73 
2. Boucles FOR... TO avec un pas ..................... 76 
3. Avec 8 couleurs ................................... 78 
4; Des SOnNS AUSSL 5 456 mors tannien eee ss 82 
5. Nombres au hasard et bataille galactique ............. 83 

Programmes 
7. Compte à rebours (FOR, NEXT, PING) ...... 88 
8. De zéro à 99 (FOR, NEXT) ................. 89 
9. Le hasard cet inconnu (FOR, RND, INT) ...... 90 
10. Pour réveiller, sons et couleurs ! 
(PING, ZAP, PAPER, IN) ................. 95 
11. Notation scientifique 1.23456689E + 10 ....... 97 
12. Conversion binaire - décimale 
(FOR;'INT).. Sandi creme niict our ée 99 

Chapitre VI — L’art graphique en basse résolution ................. 101 
1. L'organisation de l’écran en « mode texte » ........... 101 
2. Graphique basse résolution, mode 9 ................. 105 
3::Ciel d'étoiles 555588 cours sometimes 109 
4. SoUus-Programmes ................................. 112 
5. Lemode LORES 1:::,: 24245 2 2autenns die 2 dsl sanécs 114 
6. Pour mêler les genres .............................. 117 

Programmes 
13. Arc-en-ciel (LORES, PLOT, READ, DATA) 121 
14. C’est plus C’est moins (PLOTS$, SGN) ........ 124 
15. Une mosaïque vivante (PLOT, LORES) ....... 125 
16. Histogramme (LORES, PLOT, DIM) ........ 127 
17. Un mot transformé (PLOT, SCRN) .......... 129 


18. Faire-part de naissance (PLOT, GO 
SUB, RETURN) .......................... 130 


224 





PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES 


Chapitre VII — Dessins en haute résolution ........................ 


. Placement du curseur .............................. 


Tracés tre ane tente ed end 


: RÉDÉTIHIONS 54 minor ne D berne 
. Lecture d’une touche avec KEY$ .................... 
s Les attributs 22 is norte ete nn cran ne tr er 


Programmes 
19. Chronomètre digital précis 
(STRS, VAL): mine uma: 
20. Caractères accentués ....................... 
21. Les caractères semi-graphiques à 
la loupe (HIRES, CURSET, CHAR, DRAW) 
22. Création de motifs (HIRES, CURSET, CHAR, 
DRAW, DEF, EN) ........................ 
23. Courbe digitalisée (HIRES, CURSET, 
DRAW): 2.2 RS En eee 
24. Courbe paramétrée (HIRES, CURSET, 
DRAW, PATTERN, DEF, FN) ............. 
25. Diagramme circulaire (HIRES, CURSET, 
(CIRCLE, DRAW, CHAR) ................. 
26. FILL : du remplissage avec 64 motifs 
ŒHIRES, CURSET, CURMOV, FILL, CHAR) 


Chapitre VIII — Le moment musical ............................. 


Un & & D — 


. Music, pour commencer ........................... 
. Pour jouer : PLAY ............................... 
.-Des'accords :.::% museum tement Pres das 
L SONS:UIVETS en 2 nan ne dise ee nd Ste 
. Attendez une touche ............................... 


Programmes 

27. SOUND : découvrez les sons 

(SOUND; GET) 25 rein sente ts 
28. MUSIC : musique (MUSIC, GET) ........... 
29. SOUND MUSIC PLAY : pour 

mélanger les sons (SOUND, 

MUSIC PLAY)... uen doa à 
30. En rythme: con ds mucecra ou 
31. Musique au hasard (MUSIC) ................ 


Chapitre IX — Pour réviser cinq programmes utiles 


ou divertissants ................................... 


Programmes 
32. Mise en forme : comment afficher 
proprement un nombre ..................... 
33. Classement alphabétique ................... 
34. Course de haie ............................ 
35. L’ardoise magique ......................... 
36. Orgue à mémoire .......................... 


Le Basic de l’Oric et les mots réservés ............................. 


Le:code ASCIL.. 2: 22m uen etienne to cite 


Les caractères graphiques de l’Oric ............................... 


Mots-clés 


133 
133 
137 
141 
143 
146 
147 


151 
154 


157 
159 
163 
167 
173 
175 
177 
177 
179 
181 


182 
183 


185 
186 


187 
191 
192 


195 


195 
200 
203 
207 
211 
215 
216 
217 


219 






RL LE LELEE INT TS SSI S ESS SSII SITE EEE PP PP PP PP PP PP PP PP PP PP PP PPT PERD 





Pratique de l’Oric 1 et 36 programmes 


S.E.C.F. 


E2 


EDITIONS RADIO 


Service lecteurs 


(à retourner à S.E.C.F.-Éditions Radio, 9, rue Jacob, 75006 Paris) 


Pour nous permettre de vous proposer des ouvrages toujours meilleurs, nous souhaiterions 
recevoir vos critiques, appréciations et suggestions sur le présent livre : 


Quels sont les ouvrages (thème, sujet, niveau) que vous souhaiteriez voir publier par notre 
société ? 


Nous vous remercions de votre confiance et de votre coopération. 


S.E.C.F.-Éditions Radio 


Je désire recevoir gratuitement et sans engagement (mettre une croix dans la case) : 

[1 Votre catalogue général (Electronique professionnelle et grand public, 
Informatique, Hi-Fi, Vidéo) 

[1 Votre catalogue spécial informatique. 


Nom : 2 _________ Prénom: 
Adresse : 


Secteur d’activité et fonction : 


CENTRES D’INTÉRÊTS 


Cl Electronique professionnelle CO Micro-informatique professionnelle 

[1 Electronique de loisirs [1 Micro-informatique de loisirs 

[ Vidéo LÉ AUS La un Re Re 
RCD _————————_——— Zn an io Dane nes 


Voir au dos ’’Correspondance Auteurs’’ 


Pratique de l’Oric 1 et 36 programmes 


cosssescecece 






S.E.C.F. 


E2 


EDITIONS RADIO 


Service lecteurs 


Correspondance auteurs 


(à retourner à S.E.C.F.-Éditions Radio, 9, rue Jacob, 75006 Paris) 


Pour toute demande d’éclaircissements techniques relatifs à ce livre, formulez ci-dessous vos 
questions, avec le maximum de précisions. Nous les transmettrons à l’auteur qui ne manquera pas 
de vous répondre directement : 


Nom : 2 Prénom: 


Adresse : 


000000000000 00000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000 


nsuel | 
T la micro-informatique 


et de ses utilisations 


journaux 
en vente chez tous les marchands de jou 


RO 0 


CRE PPORAATOTE 
pue ! [VOTRE BUREAU DE DEMAIN 


Vos 


4 micro-ordinateurs au banc d'essai : 
le portable d'Osborne 


Supermlero 
d'ADDX 


2 programmos 


«un flehior 
avec votre TRS.80 
Jestion de chantiers 


DES BOUTIQUES DE CONFECTION 
À LA MODE MICRO 


3 bancs d'essai : 
OLLLTPA Hewlett-Packard 
« le Sanco 7500 

le 8030 de Commodore 
= l'F 800 de Oùi 
+ le LX 538 de Logaban 


10 programmes 

« Gestion, tri et <lassement de dossiers 
« Tenue des Hocks pour services achats 
+ fichiers pour mailing et Promotion 

« Comptabilité LT TPS 


ROME DU BON NORMANDe 
IN CHARCUTIER SE MycRe INFORMANnSE 


TL Te LALITTI 
‘Apple He 
lAkyane de MEC/ Mu 
€ Dot de CDI 

QD ETT 

Orie 1 


BALLLUTTA 
1tlon d'un 


inat médhrot 





D q 
Editions Radio 


9, RUE JACOB - 75006 PARIS 
| TÉL. 329.63.70 


PRATIQUE 


l'ORIC1 


36 PROGRAMMES 


Micro-ordinateur familial par excellence, l’Oric-1 connaît un succès « explosif ». 
Ce livre est destiné à vous en présenter l’usage et vise un double objectif : 


e Vous expliquer la programmation dans ce langage qu’on appelle le Basic et ce, 
à l’aide d’une infinité d'exemples pratiques. 
+ Vous proposer toute une série de programmes d’applications qui vous serviront 
à maîtriser parfaitement l’outil informatique. 


Très progressif et écrit dans une langue simple, ce livre est aussi l’un des plus 
didactiques qui soient. Il ne demande au lecteur aucune connaissance préalable 
en informatique et est destiné à tous les publics. 


SE GE. 


Ill 1093 (ll 


ISBN 2 7091 0932 8 en 





Code : 37 ÉDITIONS RADIO [Prix : 100 F 


GHVN38 T - NIUTH AE SE UTP BTE EE TRE E- -DJI4O.I °P CHOIRRET.